[原创] 记录指针与数组不同使用场景的区别
在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进行运算, 因此错误!!!!