從一道題目看二維陣列的地址

pengfoo發表於2012-09-21
#include<iostream>
using namespace std;


int main()
{
	char str[][4]={{1,2,3,4},{5,6,7,8}};
	char *pc1 = (char *)(&str+1);
	char *pc2 = (char *)(&str[0]+1);
	char *pc3 = (char *)(str+1);
	char c1 = *(pc1-1);
	char c2 = *(pc2-1);
	char c3 = *(pc3-1);
	cout<<"c1="<<(int)c1<<endl;
	cout<<"c2="<<(int)c2<<endl;
	cout<<"c3="<<(int)c3<<endl;
	getchar();
	return 0;
}


輸出為8,4,4

二維陣列可以看做特殊的一維陣列,如上陣列可以看成2個元素,第0個元素是{1,2,3,4,},第1個元素是{5,6,7,8}

 

那麼&str表示整個陣列的地址;

str表示陣列第一個元素的地址(第0個元素);

&str[0]表示第一行的地址。

相關文章