关于指针,要怎么理解才不难?
指针总感觉很难,一碰到这个问题就害怕,要怎么理解好?
[解决办法]
声明一个任意类型的变量并初始化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打印地址
说白了,指针类型和其他类型是一样的,楼主不要害怕,遇到问题不要绕开,主动去找方法,多敲代码,希望上面说的方法有助于你理解
[解决办法]
指针就是地址,把所有“指针”换成“地址”。如“变量指针”换成“变量地址”,“函数指针”换成“函数地址”这样就会理解的比较好了。刚开始学的时候都一样,我当初也对指针不太理解。不过,指针是C的精华,也是自认为C里最难理解的了。学好了这个,C也一定能学好。加油努力!
[解决办法]
你假设你现在有很多客户`你要记录客户的地址`~
如果直接记地址的话你可能很难记住`~
所以用得用一个小本把他们的地址记下来`~
你现在就想象客户的地址就是分配的内存空间`~
你用来记他们地址的小本就是指针`~
那么这个时候你要去拜访某个客户`就有两种方法`~
第一`你把他们的地址记在脑子里了`不用通过小本再去找`~
这时候就等于没有用地址`这是直接寻址`~
第二`你没有记住`你要在本子上查到地址以后`才知道位置`~
所以你要先看你记下来的地址`这个就是间接寻址`就等于通过指针来完成的`~
举个例子:
比如某客户a的地址是"某小区120号"`~
那在你脑子里会有这个一个印象:
"某小区120号";
因为你不容易记住,所以你可以在本子上这样记下来`~
char *pa = "某小区120号";
如果你记得"某小区120号"你就可以直接去这个地址找到这个人`~
但是如果你不记得了`~
你就得通过pa间接的先找到这个地方`再找到这个人`~
关于指针,要如何理解才不难
关于指针,要怎么理解才不难?指针总感觉很难,一碰到这个问题就害怕,要怎么理解好?[解决办法]声明一个任意类
