code.club

 找回密碼
 立即註冊
搜索
查看: 7223|回復: 1
打印 上一主題 下一主題

多維陣列的指標用法

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2015-1-21 23:41:34 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
本帖最後由 enter 於 2015-1-22 17:55 編輯

#include <stdio.h>
int main(void){
int x[2][3][4]={
0,10,20,30,  40,50,60,70,  80,90,100,110,
120,130,140,150,  160,170,180,190,  200,210,220,230};

char str[4][3]={"how","old","are","you"};
char *p=&str;

printf("%d \n",  *(**x+1) );//10,*愈多就愈往小陣列靠
printf("%d \n",  **(*x+1) );//40
printf("%d \n",  *(*(*x+1)+0) );//40 請將這種視為+0,才能比較詳細看出內涵
printf("%d \n",  ***(x+1) );//120
printf("%d\n",   *(*(*(x+1) +1)  +2) );//180
printf("%d\n",**(*x+5));//其實這都可以視為一維陣列
printf("%d\n", *(*(*x+2)+2)     );//100

printf("%c %c %c %c %c\n",str[2][2],*(*(str+2)+2),*(str[2]+2),*(p+8)); // r, 但*(str+8)是錯的
printf("%s %s %s %s\n",str,p,str[0]);// p[0]是錯的
printf("%s %s %s\n",str+2,p+2,str[0]+2); // str+2是指從第三個次陣列開始,p+2和str[0]+2則都從第三個元素開始。

return 0;
}
回復

使用道具 舉報

沙發
 樓主| 發表於 2015-1-22 21:40:48 | 只看該作者
本帖最後由 enter 於 2015-1-22 22:29 編輯

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char str[4][7]={"mary","desk","quit","gold"};
char *p;
int num[2][3][4]={
1,2,3,4,  5,6,7,8,  9,10,11,12,
13,14,15,16,  17,18,19,20,  21,22,23,24};
int *q;
p=str;
q=num; //這裡當成一維陣列的指標變數來想會比較清楚

printf("%c %c %c\n",str[1][3],*(*(str+1)+3),*(str[1]+3)); //k,k,k
printf("%s %s\n",str[2],str+2); //quit
printf("%s %s\n",str[2]+1,*(str+2)+1);//uit
printf("%s %s %s\n",(str[2]+2),*(str+3),str+3);//it,gold,gold
printf("%c %s\n",p[7],p+14);//要注意,用指標變數p來表示,則它的算法會將次陣列中未有元素的空格也一併計算進來


printf("%d %d %d %d\n",num[1][2][1],*(*(*(num+1)+2)+1),*(*(num[1]+2)+1),*(num[1][2]+1));//22
printf("%d",q[8]);//9
return 0;
}
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|手機版|Archiver|code.club  

GMT+8, 2024-11-22 13:58 , Processed in 0.075480 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表