首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言编程精华——《指针》

C语言编程精华--《指针》

使用指针有两方面的优势:

1、用指针能够更好完成某些任务;

2、有些任务只能是用指针才能够完成。

一、指针定义

1、计算机的内存

计算机的内存(RAM)由数百万个或千万个顺序存储位置组成(具体有多少个存储位置是由内存容量决定),每个内存位置都有唯一的地址。计算机内存地址范围从0开始到最大值(取决于内存的数量)。

例如:int x=360;

当程序使用该变量名时,将自动访问正确的内存位置。虽然程序使用了该位置的地址,但是对我们用户来讲它是隐藏,你也不需要关心这个问题。

2、如何创建指针

注意:x变量或任何其他变量的地址都是一个数字(类似于C语言的其他数字)。假设大家知识一个变量的地址,我们应该如何去创建第2个变量来存储第一个变量的地址。

int x=360;

第一步:先声明一个变量存储x变量的地址。

int *p_x=NULL;

第二步:把x变量的地址存储到p_x变量中。

p_x=&x;

工程案例:

// PointerTest.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include

#define P_NULL NULL

int _tmain(int argc, _TCHAR* argv[])

{

int x = 360; // 声明变量x,且初始化值360

printf("x的地址:%d ",&x);

int *p_x = P_NULL;

printf("p_x的值:%d ",p_x);

p_x=&x;

return 0;

}

3、声明指针

指针是一个数值变量,和所有变量类似,必须先声明后使用。指针变量和普通变量命名规则基本相同,而且指针变量名必须唯一。大家只要按照遵循C语言的命名规范,就可以任意命名。

int *p_Man; // 没有结婚之前

const // 结婚

指针的声明形式:

类型名 *指针名;

类型名可以是任意C语言的变量类型,它指明该指针指向变量的类型。星号(*)间接运算符,表明指针名是一个指向类型名类型的指针,不是类型名类型的变量。

例如:

char *c1,*c2; // c1,c2都是指向char类型的指针

double *v1,v2; // v1是指向double类型变量的指针,v2是普通的double类型变量

注意:

*号可用作间接运算符和乘法运算符。

4、初始化指针

没有存储变量地址的指针是没用的。变量的地址不会自动(变)进指针中,必须在程序使用取地址运算符(&)获得变量的地址,然后将其存入指针当中才可以。把取地址运算符放在变量名前,便会该变量的地址。

初始化指针:

指针 = &变量;

v1=&v2;

5、使用指针

现在大家学会声明和初始化指针之后,如何使用指针,又要用到间接运算符(*)。把*放在指针名前,该 指针引用它所指向的变量。

实例:

// PointerTest.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include

#define P_NULL NULL

int _tmain(int argc, _TCHAR* argv[])

{

int x = 360; // 声明变量x,且初始化值360

printf("x的地址:%d ",&x);

int *p_x = P_NULL;

printf("p_x的值:%d ",p_x);

p_x=&x;

// 输出时加*号,指的是p_x指针变量指向x变量的地址里面的值360

printf("p_x存储x地址里面的值:%d ",*p_x);

return 0;

}

二、指针用途

1、指针和数组

A、数组名

数组名(不带方括号)是指向数组第一个元素(即,首元素)的指针。比如你声明一个数组int a[];那么a中存储的是数组第1个元素的地址。

案例:

// ArrSoft.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include

int _tmain(int argc, _TCHAR* argv[])

{

double a[20];

// 数组下标从0开始 ,数组就是首地址,数组存储空间是连续,数组存储是同类型数据

for (int i = 0; i

{

printf("数组a[%2d]的地址为:%d ",i,&a[i]);

}

return 0;

}

B、存储数组元素(暂时不讲)

C、指针算术(指针递增、指针递减)(暂时不讲,同学们的要求)

三、如何将指针应用到(数组、函数、结构体、链表等)(暂时不讲,同学们的要求)

1、C编程内存越界和内存监测技术

按照刚才图形结构设计思路,首选要你要构建一个接口文件:Interface.h

四、工程案例(计算机内存监控系统)

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171211A06GYF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券