教科书级的多重指针问题
char *arr[20]; char **parr=arr;
那么parr==arr?
*parr==*arr==arr[0]?
**parr==*arr[0]?
以上三个等式应该是对的吧?????
各位大虾赶快给个答案,小弟拜谢!!!!!
----------------解决方案--------------------------------------------------------
yes!!!
----------------解决方案--------------------------------------------------------
你基础很好!!那么你觉得(*arr)[20]和*arr[20]有什么不同啊??
----------------解决方案--------------------------------------------------------
.......
函数
数组
----------------解决方案--------------------------------------------------------
(*arr)[20]是数组吧,你前边应该加上 数据类型 (*arr)[20],arr指向含20个元素的数组,指向这个数组的首地址,叫数组指针对不对?
*arr[20]是指针吧,指针数组arr,由20个指针元素组成,前边应该加上 数据类型 *arr[20],arr[0]…arr[19]都是指针,*arr==arr[0],**arr==*arr[0],对吧?
----------------解决方案--------------------------------------------------------
优先级别()>[]>*
----------------解决方案--------------------------------------------------------
(*arr)[20]是指针
说明(*arr)是有20个元素的数组,那么arr就是指向有20个元素这样数组的指针,就如arr[][20]一样!!!
如
int year[12][31];
int (*arr)[31];
初始化方法一:
for(i=0;i<12;i++)
for(j=0;j<31;j++)
*(*(year+i)+j)=0;或者直接year[i][j]=0;
初始化方法二:
for(arr=year;arr!=(year+12);arr++)
{
int *day;
for(day=*arr;day!=*arr+31;day++)
*day=0;
}
主要是为了让你知道(*arr)[20]和二维数组的关系!!
接着
int *arr[20]是数组;
就不用说了:数组的元素是20个int指针
----------------解决方案--------------------------------------------------------
我开头给写错了后边都对,查了谭浩强那本书,(*arr)[20]是指针,叫数组指针,int *arr[20]是数组,叫指针数组
感谢viky2003的纠正!
----------------解决方案--------------------------------------------------------