关于C语言指针问题

这里我想问一下为什么a[0]是int *,int *是什么意思?p的类型是什么?
*在书本上是去内容运算符,“用*对它解引用”这要怎么理解?
求解,十分感激!

指针类型定义的时候,用的是int *pt; 你可以直接理解成pt是用来存放一个地址的变量,而它代表的这个地址上存了一个int型数据。*pt就是去pt这个地址上取里面存放的内容,所以*pt是int类型,pt也就按照定义的格式说成是int *类型。“用*对它解引用”这句话的意思就是去指针代表的这个地址上取里面存放的内容。而pt[0],跟*pt是完全相同的意思,就是去取pt代表的地址上存放的int型数据。
你问的内容里p跟上面我说的pt是一种类型,即int *类型。
而a由于是二维数组,它相当于指向指针的指针,即你去a所指向的地址上取到的数据并不是int型,而是又一个地址类型,即*a是int *型,即a[0]是int *型。(a也就相当于int **类型)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-08-27
*有4种用法
1,类型 *,结合在一起,表示指向某个类型变量的指针,例如int *ptr, void **data
2,乘法,这个不必说了
3,解除引用, 例如: int a = 0; int *ptr = &a; *ptr = 1;(效果等同于a = 1),这叫解除引用,即通过地址找到实际的对象来操作
4,/*,注释.
不要把解除引用和声明指针类型弄混了.