黑马程序员技术交流社区

标题: 一个关于指针的小问题 [打印本页]

作者: 霸王睡别姬    时间: 2015-4-25 09:26
标题: 一个关于指针的小问题
int *p[3]={1,2,3};和int p[]={1,2,3};等价吗?
它们在用法上有什么区别呢?

作者: ruihai    时间: 2015-4-25 12:00
前面一个不对,int *p[] 是指针数组,数组里应该存放int类型的指针,而不是整形数据
作者: 麻木    时间: 2015-4-25 12:35
int p[3]={1,2,3} 等于int p[]={1,2,3},int *p[3]是指针数组
作者: 葛先生    时间: 2015-4-25 13:58
中括号里的数字num主要是为了让系统判断分配num*数据类型得出的字节来储存数组,例如int p[3]那就是分配3*4(int字节数)=12
如果中括号是空的,那就通过后面的元素个数来判断了,也就是元素个数*类型字节数
作者: T.H.T    时间: 2015-4-25 14:16

c语言不等价
int p[]={1,2,3};  是一个数据类型为整型的数组
int *p[3]={1,2,3};   是一个指针变量数组,每个指针变量存的是内存地址,赋值1,2,3 这样就没意义了


作者: 霸王睡别姬    时间: 2015-4-25 16:02
T.H.T 发表于 2015-4-25 14:16
c语言不等价
int p[]={1,2,3};  是一个数据类型为整型的数组
int *p[3]={1,2,3};   是一个指针变量数组, ...

明白了,感谢你:P
作者: 霸王睡别姬    时间: 2015-4-25 16:04
ruihai 发表于 2015-4-25 12:00
前面一个不对,int *p[] 是指针数组,数组里应该存放int类型的指针,而不是整形数据 ...

也就是说数组里面存的是一些如ffc5这样的一些地址值咯?
作者: 霸王睡别姬    时间: 2015-4-25 16:06
葛先生 发表于 2015-4-25 13:58
中括号里的数字num主要是为了让系统判断分配num*数据类型得出的字节来储存数组,例如int p[3]那就是分配3*4 ...

嗯,谢谢你的解答:)
作者: ruihai    时间: 2015-4-25 17:56
霸王睡别姬 发表于 2015-4-25 16:04
也就是说数组里面存的是一些如ffc5这样的一些地址值咯?

是的。。
作者: lz465350    时间: 2015-4-26 21:39
int *p[3]可以看成是int p[][3];因为数组int p[5];的首地址p也是一个指针




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2