博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C 语言指针怎么理解
阅读量:4647 次
发布时间:2019-06-09

本文共 1468 字,大约阅读时间需要 4 分钟。

不理解指针,是因为有人教错了你。

有人告诉你,指针是“指向”某某某的,那就是误导你,给你挖了个坑。初学者小心不要误读这“指向”二字。

第一,“指针”通常用于保存一个地址,这个地址的数据类型在定义指针变量时确定。

举个例子,做个比较:

int a; //定义一个变量a,用于保存一个int类型。

int * b; //定义一个指针变量b,用于保存一个地址,这个地址所保存的数据应该是int类型。

第二,是变量就应该可以赋值,指针变量也一样。但一般不会给指针直接赋值一个数值,而是将其他变量的地址赋值给指针,或者其他指针的值赋值给这个指针。

继续上面的例子:

b=&a; //把变量a的地址赋值给b。“&”操作是取变量的地址。

继续举例:

int * c; //我们又定义一个指针c

c=b; //将b的值赋值给c,上面已经知道b是指针,它的值是a的地址,那么现在c 的值和b一样,也是个a的地址。

第三,指针变量保存的值,也就是地址是可以变的。

举个数组初始化的例子:

int d[100];

int * e;

e=&d[0]; //e保存了数组d的第一个数据的地址

for (int i=0; i<100; i++){

*e = 0; //把该地址中的数据赋值0

e++; //地址累加一次,也就是数组中下一个数据的地址

}

指针和其他变量一样,可以运算(一般是加减),也可以重新赋值。

第四,指针有啥用。

比方说,我们有个函数,如下:

int add(int x){

return (x+1); //把输入的值加1并返回结果。

}

好了,应用的时候是这样的:

{

int a=1;

a=add(a); //add函数返回的是a+1

//现在 a等于2

}

很简单吧,就是把a都累加一次。

用指针怎么写:

void add(int *y){ //给入的是一个int指针,是一个地址。

*y = *y + 1; //* 是指引用 这个地址所保存的变量

//这条语句的意思就是,把这个地址里的值加1,然后放回这个地址。

}

把这个函数用起来:

{

int a=1;

add(&a); //把a的地址传到函数里

//add函数,就是把a的值加1,再放回到变量a里。

//现在a等于2

}

试想一下,如果我们要对一个数据结构里的数据进行处理,那是不是就该传入这个结构的地址,在函数中依靠指针来引用这个地址的数据结构,进行运算。

第五,若已有一个指针变量,可不可以用另外一个指针来保存这个变量的地址呢。

可以的。

一个变量保存另一个指针的地址,那它就是通常所说是“指针的指针”了。

通常,指针的指针多用做(或指的是)函数指针或数据结构中有指针的情况。初学者搞不清,就不要勉强了。

第六,空指针可怕吗?

我们知道,一个变量要赋值后才能用,指针也是一样。指针不赋值(不给定地址)就拿来用,是不是也要出错。这个就是空指针。一般把指针赋值为Null,就是表明这个指针是空的,不能用。所以程序中一定要经常判别指针不是Null才能用。

最后,初学C语言,最好把复合的语句拆开来看,比较容易理解。像 int *a=&b; 这种,拆成

int * a;

a=&b;

就好理解了。

 

上面所说的,是指针比较基础的东西,希望能帮助初学者学习理清思路。

 

指针详细资料

http://www.makeru.com.cn/live/1392_238.html?s=45051

转载于:https://www.cnblogs.com/QianD/p/10832727.html

你可能感兴趣的文章
完成评论功能
查看>>
far和near
查看>>
Python爬虫实战四之抓取淘宝MM照片
查看>>
2015 Multi-University Training Contest 1
查看>>
C#判断一个字符串是否是数字或者含有某个数字
查看>>
SVN使用指南
查看>>
【转载】掌 握 3 C ‧ 迎 接 亮 丽 职 涯
查看>>
爬取网站附件
查看>>
java基础图形界面和IO系统
查看>>
javascript学习笔记
查看>>
hdu 3996
查看>>
python第三十九课——面向对象(二)之初始化属性
查看>>
python学习笔记之函数装饰器
查看>>
FEM计算2D瞬态热传导方程
查看>>
四年时光,匆匆而过
查看>>
【php】【psr】psr1 基础编码规范
查看>>
WAF SSI
查看>>
LDAP & it's implementation
查看>>
Apache HttpComponents中的cookie匹配策略
查看>>
冰封的海盗攻略
查看>>