【 在 wanllow 的大作中提到: 】
: 闲得蛋疼,折腾点事
: int arr[4] = { 13, 12, 21, 30 }; //这是一个数组
: int(*ptr)[4] = &arr; //这是指向数组的指针
: ...................
你这是指针, 数组指针, 数组地址和下标地址计算不是太清楚, 还有字符数组,字符串指针,
这些语言层面, 是很微妙的。
下面例子可能更清晰点:
#include <iostream>
using namespace std;
char arr[4] = { 'a', 'b', 'c', 'd' }; //这是一个数组
char arr2[4] = { 'x', 'y', 'z', '\0' }; //这是一个数组
char(*ptr)[4] = &arr; //这是指向数组的指针
char * pheader = (char*)&arr[0];
int main()
{
std::cout << ptr <<" "<<*pheader<<" "<<pheader<<endl;
for(int offSet=0; offSet<4; ++offSet)
{
std::cout << ptr + offSet<<" "<< *(ptr + offSet) <<" "<< (ptr + offSet)[0] << std::endl;
}
return 0;
}
0x404050 a abcdxyz
0x404050 abcdxyz abcdxyz
0x404054 xyz xyz
0x404058 P@@ P@@
0x40405c
--
FROM 124.126.0.*