若有定义语句: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 (*)[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是指向二维数组的指针
参考http://see.xidian.edu.cn/cpp/html/476.html
行地址的类型和整数元素的地址的类型不一样嘛