code.club
標題:
多維陣列的指標用法
[打印本頁]
作者:
enter
時間:
2015-1-21 23:41
標題:
多維陣列的指標用法
本帖最後由 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;
}
作者:
enter
時間:
2015-1-22 21:40
本帖最後由 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;
}
歡迎光臨 code.club (https://code.club/)
Powered by Discuz! X3.2