0
04
00
18
请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于指针

int arr[] = {4, 3, 2, 1, 7};
  int *p = (int *) malloc(sizeof(int) * 10);
  int *p2 = new int(10);
  const char *p3 = "1,2,3";
  //  int *p4 = {1,2,3,4};
  //  const int *p5 = {1, 2, 3, 4};

老师,为什么char *p3 = “1,2,3”;可以,但是int *p4 = {1,2,3,4};就不行呢?不都是指向常量空间吗?

正在回答

插入代码

1回答

C语言中数组不可以直接赋值给指针,只能将数组首地址赋值给指针。const char *p3 = "1,2,3" 其实就是将字符串首地址赋给p3;

int *p4 = {1,2,3,4};不行的,int *p4 = arr;则可以。

1 回复 有任何疑惑可以回复我~
  • 提问者 学以致用over #1
    是否可以理解为数组需要程序员自己开辟空间,而字符串在“abc“在定义开始系统就已经开辟空间了。
    回复 有任何疑惑可以回复我~ 2022-04-11 14:12:51
  • quickzhao 回复 提问者 学以致用over #2
    不是,字符串在C中处理特殊点。
    回复 有任何疑惑可以回复我~ 2022-04-11 14:23:14
  • 提问者 学以致用over 回复 quickzhao #3
    老师可以具体讲讲吗?
    回复 有任何疑惑可以回复我~ 2022-04-11 22:09:00
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号