首先一段代码:
char a[4] = {1,2,3,4};
//int * ptr = a; //a的地址赋值给ptr
char * arr[4];
char i = 0;
char ** parr = arr; //arr的地址赋值给parr
char * str;
*(arr) = a; //a的地址赋值给arr[0]
arr[1] = a + 1; //a[1]的地址赋值给arr[0]
*(arr + 2) = a + 2;
*(arr + 3) = a + 3;
str = *parr; //arr[0]的内容赋值给str
printf("%d
",str[0]);
str = *(parr+1); //arr[1]的内容赋值给str
printf("%d
",str[0]);
/*
parr是指针的指针,char ** parr = arr赋值后,
指针变量parr保存的就是数组arr的地址
*(parr+i)相当于arr[i],由于arr是指针数组,里面保存的是指针,
同时,上面的赋值语句,将数组arr4个变量赋值为数组a每一个元素的地址
*/
for (i=0; i<4; i++)
{
str = *(parr+i);//这个语句的意思是打印出数组a的所有数据.
printf("%d
",*str); //*str=str[0]
}
Vc++6.0运行界面如下,调试功能还是不错的,
具体的信息如下所示: