关于数组的小问题

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];
求大神们指教
...全文
181 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
谢谢大神门 我自己想通了不过还是要谢谢

70,024

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧