若有定义语句:int a[2][3],*p[3],则以下语句正确的是(C)
A)p=a B)p[0]=a C)p[0]=&a[1][2] D)p[1]=&a;
为什么不选B?a是二维数组的首地址啊,和数组第一个元素的地址不是一样的吗?为啥不可以
int a[2][3]
æ°ç»ç±»åæ¯int [2][3]ã
å°åç±»åæ¯ int (*)[3],å«ä¹æ¯ æåï¼å«3个æ´æ°çä¸ç»´æ°ç»ï¼ç常éæéï¼è¯¥æéæåçå°å为3个åçä¸è¡ï¼æ以æ°ç»åæ¬èº«å°±æ¯è¡å°åã
int *p[3]
æ°ç»ç±»åæ¯ int *[3] ï¼å«ä¹æ¯ ï¼å«3个(æ´æ°æé)çæ°ç»ã
å°åç±»åæ¯ int **ï¼å«ä¹æ¯ï¼æåï¼æ´æ°æéï¼ç常éæéã
Aï¼p=aï¼é误
åaçå°åèµå¼ç»pï¼pæ¯æ°ç»ï¼æ°ç»å°±æ¯å¸¸éæéï¼æ以ä¸å¯ä»¥èµå¼ã
B)p[0]=aï¼é误
p[0]æ¯æ´æ°æéï¼ç±»åæ¯int *ï¼åaçå°åç±»åä¸å¹é ã
C)p[0]=&a[1][2],æ£ç¡®
&a[1][2]æ¯aæ°ç»ä¸ä¸ä¸ªæ´æ°å ç´ çå°åï¼ç±»åint * åp[0]ç±»åå¹é ã
D)P[1]=&aï¼é误
&aå°±æ¯açå°åï¼ç±»åæ¯int (*)[3],ä¸p[1]çç±»åä¸å¹é ã追é®
è¡å°åçç±»ååæ´æ°å ç´ çå°åçç±»åä¸ä¸æ ·å
追çå½ç¶ä¸ä¸æ ·ï¼è¡å°åç±»åï¼æéï¼ææ该è¡çå宽ï¼å°±æ¯ä¸è¡æå¤å°å
ç´ ï¼æ以类åæ¯ int (*)[3]ï¼æ¯äºçº§æéï¼æ´æ°å
ç´ å°åæ¯ææå个å
ç´ çå°åï¼int *ï¼ ä¸çº§æéï¼è½ç¶å°åçå¼é½ä¸æ ·ï¼ä½æ¯ç±»åä¸åã
åå¦æépçç±»åæ¯ int (*)[3]ï¼å³å¦æ¤å®ä¹ï¼ int (*p)[3]=a
é£ä¹p++åï¼pæå第äºè¡ï¼å³a[1]ï¼ç¬¬äºè¡é¦å°åï¼ãè½ç¶pä¸çå°ååå§å¼å°±æ¯a[0][0]çå°åï¼ä¹æ¯açå°åï¼ä¹æ¯a[0]çå°åï¼ç¬¬ä¸è¡é¦å°åï¼ï¼ä½æ¯æéè¿ç®æ¶ç对é½å®½åº¦æ¯4*3ï¼å°±æ¯3个intç±»åç宽度ï¼ä¹å°±æ¯12个åèãæ以p++åï¼pæåäºå
ç´ a[1][0]ï¼ä»èå®ç°è¡å®ä½ã
èå¦ææépæ¯int *ï¼å³å¦æ¤å®ä¹: int * p=a[0][0];
æ¤æ¶pçå¼åä¸é¢çpçå¼æ¯ä¸æ ·çï¼ä½æ¯p++åï¼æåçæ¯a[0][1],å 为对é½å®½åº¦æ¯1个intç±»åç宽度ï¼å³4åèï¼å®ç°æ´æ°å
ç´ çå®ä½ã
æ以æéç±»åä¸åå
³é®å¨äºæ°æ®å¯¹é½æå«æ°æ®å®ä½ï¼æä»¥ä½ åªè¦äºè§£ä¸åæéç±»åç对é½å®½åº¦å°±å¯ä»¥ææ¡æéåæ°ç»ä¸äºç»å¸¸å®¹ææ··ä¹±çæ¦å¿µã
行地址的类型和整数元素的地址的类型不一样嘛
追答p[0]是指向整型的指针,a是指向一维整型数组的指针,&a是指向二维数组的指针
参考
行地址的类型和整数元素的地址的类型不一样嘛