关于数组的小问题

c415768667 2013-01-24 12:31:44
int *p[2]={{1,2,3},{4,4,4}};
为什么这样不行
char *p[2]={"sadf","asdf"};
这样就可以。
不都是一维数组吗?
我只知道第二个指针相当于char p[2][5];
为什么第一个数组就不等于 int p[2][3];
求大神们指教
...全文
126 11 点赞 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hushoubo 2013-01-24
正解...
引用 2 楼 shn521 的回复:
指针数组中的每一个元素均为指针 "sadf"可以代表地址 {1,2,3}不能代表地址
  • 打赏
  • 举报
回复
BrightPi 2013-01-24
2L正解。弄清"123"与123的区别吧。同为字面常量,123是一个整数,"123"则表示字符串常量,也表示了存储这个字符串常量的起始地址。所以不能将123赋予int*,但是可以将"123"赋予char*。
  • 打赏
  • 举报
回复
shn521 2013-01-24
指针数组中的每一个元素均为指针 "sadf"可以代表地址 {1,2,3}不能代表地址
  • 打赏
  • 举报
回复
lee_鹿游原 2013-01-24
先弄清 int* 和 char*
  • 打赏
  • 举报
回复
wade_2003 2013-01-24

  int a[2][3] = {{1,2,3},{4,5,6}};
    int (*p)[3];
     p = a;
  • 打赏
  • 举报
回复
lhy 2013-01-24
C语言编译器对字符串有特殊处理。
  • 打赏
  • 举报
回复
赵4老师 2013-01-24
VC调试时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。 对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。 (Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
  • 打赏
  • 举报
回复
张向彬 2013-01-24
一个是初始化列表 一个是字符串常量 完全两个概念
  • 打赏
  • 举报
回复
derekrose 2013-01-24
既然这样,你试试int *p = {1, 2, 3};行不行
  • 打赏
  • 举报
回复
c415768667 2013-01-24
谢谢大神门 我自己想通了不过还是要谢谢
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2013-01-24 12:31
社区公告
暂无公告