二维数组
char a[2][10]
&a 是一个指针 , 加1 将加整个二维数组所占空间. 相当于加20字节.
a 是一个指针 , 加1 将加加1个1维元素所占空间.
相当于加10字节.
*a 是一个指针
, 加1 将加加1个2维元素所占空间.
相当于加1字节.
**a 不是指针, 是char.
a+1与*(a+1)相等 是因为a+1 表示1维的第2个元素的首地址, *(a+1)表示
1维的第2个元素中的第1个元素的地址. 指向同一个地址. 但是含义不一样. (a+1) + 1 和 (*(a+1)) + 1就不一样了。
(a+1) + 1
表示1维的第3个元素的首地址;
(*(a+1)) + 1
表示
1维的第2个元素中的第2个元素的地址.
int main()
{
char a[2][6] = {"hello", "world"};
cout <<"a的值: "<<a<<endl;
cout <<"&a的值: "<<&a<<endl;
cout <<"a+1: "<<a+1<<endl;
cout <<"&a+1: "<<&a+1<<endl;
cout <<"*a: "<<(int*)*a<<endl;
cout <<"*a+1: "<<(int*)(*a+1)<<endl;
cout <<"**a: "<<**a<<endl;
cout <<"*(a+1): "<<(int*)*(a+1)<<endl;
cout <<"(a+1)+1: "<<a+1+1<<endl;
cout <<"*(a+1)+1: "<<(int*)(*(a+1)+1)<<endl;
return 0;
}
输出:
ps:
在腾讯面试的时候面试官问了个
char**a[8][6];
sizeof(a[6]);结果是什么?