[原创] 记录指针与数组不同使用场景的区别

  在C语言中, 对于数组, 只能做两件事: 确定该数组大小; 获得指向该数组下标为0的元素的指针    ------------  <<C traps and Pitfalls>>

  数组名是指向数组下标[0]元素的指针. (char a[3], *p; p=a;)

  作为函数形参时,以及用于表达式中的数组名, 总是被转换为指向数组首元素指针.

 

  定义为指针, 以数组方式引用

  1. char* p = "abcdefg"(p为指针, 存储字符串地址); extern char*p; p[3]; 编译器把p当作指向字符的指针, 因此先取得p的指针, 接着与偏移量相加得到地址, 最后访问该地址, 取得字符.

  2. char p[10](p存储字符本身); extern char* p; p[3]; p被声明为指针, 编译器将把p中的内容(字符)当作起始地址, 并与偏移量3进行运算, 因此错误!!!!

  

posted @ 2020-04-26 22:29  GeneWong  阅读(170)  评论(0编辑  收藏  举报