指针的疑惑!
多维数组和指针的内容 a[n][n]为二维数组!!&*a[i]为什么和a[i]等价??
*p是怎样运算的?((*p)操作是这样一种运算,返回p 的值作为地址的那个空间的取值)不太理解这句话的意思!
&p又是怎样运算的??
解释的越详细越好!
程序代码:#include <stdio.h>
int main()
{
int i,j;
long test[2][3]={0};
char* a[2][3]={"aaa","bbb","ccc","111","222","333"};
//首先确定变量 a 的地址
printf("变量a的首地址=0x%X\n",&a);
//获取变量 a 所存放的6个指针元素的地址
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("变量a的第%d个元素的地址=0x%X\n",i*3+j+1,&a[i][j]);
}
}
//下面看一看变量 a 这6个元素里面存放的都是啥 注意 上面是地址 这里是数据
//同时保存这个元素,以备下面测试用
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("变量a的第%d个元素=0x%X\n",i*3+j+1,a[i][j]);
test[i][j]=(long)a[i][j]; //对字符的具体位置(指针)进行保存
}
}
//下面,我们根据新保存的数据进行寻址,输出字符串
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("变量a的第%d个元素所指向的字符串是%s\n",i*3+j+1,test[i][j]);
}
}
return 0;
}
/*
以下是我在本机上的测试案例 当然具体数据肯定不一致,内存瞬息变化万千
变量a的首地址=0x12FF10
变量a的第1个元素的地址=0x12FF10
变量a的第2个元素的地址=0x12FF14
变量a的第3个元素的地址=0x12FF18
变量a的第4个元素的地址=0x12FF1C
变量a的第5个元素的地址=0x12FF20
变量a的第6个元素的地址=0x12FF24
变量a的第1个元素=0x4157D4
变量a的第2个元素=0x4157D0
变量a的第3个元素=0x4157CC
变量a的第4个元素=0x4157C8
变量a的第5个元素=0x4157C4
变量a的第6个元素=0x4157C0
变量a的第1个元素所指向的字符串是aaa
变量a的第2个元素所指向的字符串是bbb
变量a的第3个元素所指向的字符串是ccc
变量a的第4个元素所指向的字符串是111
变量a的第5个元素所指向的字符串是222
变量a的第6个元素所指向的字符串是333
*/
