怎么理解指针
如何理解指针我现在很不理解指针,就知道指针是一个地址,然后。。。然后就没了,哈哈哈。比如说一个普通的指针 *
如何理解指针
我现在很不理解指针,就知道指针是一个地址,然后。。。然后就没了,哈哈哈。
比如说一个普通的指针 *p,它代表什么,一个文件指针它又代表什么,然后有时候我们定义一个 struct 为一个指针,我又晕了,在这个 struct下我们比如又定义个 指针变量。还有就是多维指针。。。
麻烦能详细解释一下。
希望大家帮助,C以前只学了一点,现在需要用C,再继续学习,麻烦各位了。
[解决办法]
建议你去看下这个帖子,前几天我也是问指针问题,该贴楼主推荐我去看的,希望对你有帮助!
http://bbs.csdn.net/topics/380229884
[解决办法]
数据都是存在内存里面的,都有一个起始地址,指针就是用来保存这个地址的,而*p就是取这个内存地址上保存的数据。如此而已,文件也是一样的,它也有一个保存文件数据的地址,这个地址,就是文件指针了,如此而已,没有多少本质上的区别。
[解决办法]
http://download.csdn.net/download/anhuizhuanjiao/4782528
很好的一份讲解指针的资料
[解决办法]
+1
指针就是变量
变量对应内存中一个位置用来存储数据
而内存中的位置操作系统会给个编号做记录这个编号就是地址
指针中就是存放这个地址的。
int a = 1;
int *p = &a;// &取a的地址
假设内存中
0X100【1】《==a
0X101【0X001】
0X102【】
a的值存放在 OX100的位置内存中 OX100是内存的地址
那么指针p中就是存放a的地址0X100
*p == a //ture 值都是1
[解决办法]声明一个任意类型的变量并初始化T a = 100;
T是任意类型(如int,当然也包括指针类型),现在需要搞清楚a,&a,*a三者之间的关系
不管a是什么类型,这条语句的意思就把这个数100赋值给a这个变量,而&a就是a这个变量在内存中的地址,*a就是以a为起始地址的内存区域,也就是内存中100这个地址,这个区域存放的是什么数据,我们肯定是不知道的。
如果T是int,此时a存放的是一个整型数据100,&a就是a这个整型变量在内存中起始地址,由于a不是指针变量,所以*a是编译不过的,只有指针变量才能*。
如果T是int *,此时a存放的是内存中100这个地址,&a是a这个指针变量在内存中的起始地址,而*a就是在内存中以100为起始地址的值,并且由代码规定了这个值是个整型,而地址为100的内存空间的值是无法预知的(可能是系统有其他用处),不一定是整型数据,如果用printf("%d\n",*a);打印100地址这个值,编译的时候不一定会出错,但是运行是一定会出错的。
&符号是取地址,只要是变量,在内存中就一定有地址,所以任何变量都可以进行取址操作
*符号是取出地址里面的值,进行操作的前提是必须是个地址,*后面必须是一个地址
另外,还可以用%p打印地址
说白了,指针类型和其他类型是一样的