字符数组的指针概念的理解,望讨论。-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

字符数组的指针概念的理解,望讨论。

a123456678 2016-06-07 19:51:46 1425

写了如下一段代码,代码理解在其中,望牛人解答理解是否正确。

// m声明完后,m存储了m数组第一个字符的地址,但m并不是指针
char m[] = "abcdef";
// 才是指针,该指针的地址为m的值
char *x = m;

// 这种方式是将上面两步合二为一,则n就代表了指向数组的第一个未知的指针
char *n = "abcdef";
// 数组m的长度
printf("%d\n", sizeof(m));
// 指针x的长度
printf("%d\n", sizeof(x));
// 指针n的长度
printf("%d\n", sizeof(n));
存储
分享到
取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:30:54

    其实在内存上没什么差别,但编译器知道,m是字符串数组,x是字符指针。

    于是在编译sizeof(m)的时候,编译器生成指令去根据当前内存管理方式找到申明的数组长度编译器生成指令返回数组长度,在编译sizeof(x)的时候,编译器生成指令直接返回指针大小。

    中间更正一下,sizeof的值就是在编译时确定的

    其实像你例子这样得情况下,编译器根本不用生成指令去找那些长度,因为编译时数组长度已经确定,所以m的长度7就在指令里作为操作数了。一般free malloc出来的空间才会去找。

    总之,,编译器已经看透了一切。。

    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章
相似问题
推荐课程