A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 霸王睡别姬 中级黑马   /  2015-4-25 09:26  /  1516 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int *p[3]={1,2,3};和int p[]={1,2,3};等价吗?
它们在用法上有什么区别呢?

9 个回复

倒序浏览
前面一个不对,int *p[] 是指针数组,数组里应该存放int类型的指针,而不是整形数据
回复 使用道具 举报
int p[3]={1,2,3} 等于int p[]={1,2,3},int *p[3]是指针数组
回复 使用道具 举报
中括号里的数字num主要是为了让系统判断分配num*数据类型得出的字节来储存数组,例如int p[3]那就是分配3*4(int字节数)=12
如果中括号是空的,那就通过后面的元素个数来判断了,也就是元素个数*类型字节数
回复 使用道具 举报

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

回复 使用道具 举报
T.H.T 发表于 2015-4-25 14:16
c语言不等价
int p[]={1,2,3};  是一个数据类型为整型的数组
int *p[3]={1,2,3};   是一个指针变量数组, ...

明白了,感谢你:P
回复 使用道具 举报
ruihai 发表于 2015-4-25 12:00
前面一个不对,int *p[] 是指针数组,数组里应该存放int类型的指针,而不是整形数据 ...

也就是说数组里面存的是一些如ffc5这样的一些地址值咯?
回复 使用道具 举报
葛先生 发表于 2015-4-25 13:58
中括号里的数字num主要是为了让系统判断分配num*数据类型得出的字节来储存数组,例如int p[3]那就是分配3*4 ...

嗯,谢谢你的解答:)
回复 使用道具 举报
ruihai 中级黑马 2015-4-25 17:56:48
9#
霸王睡别姬 发表于 2015-4-25 16:04
也就是说数组里面存的是一些如ffc5这样的一些地址值咯?

是的。。
回复 使用道具 举报
int *p[3]可以看成是int p[][3];因为数组int p[5];的首地址p也是一个指针
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马