當前位置:首頁 » 參考文獻 » 二維引用

二維引用

發布時間: 2021-03-20 05:09:36

Ⅰ 關於C語言的二維數組元素引用的問題

二維數組a[4][3]的二維指針引用方式表示描述
*(a+i)取行,此處不能表示任何元素,必須再加j取列
然後*(*(a+i)+j)取了元素

Ⅱ c語言中二維數組怎麼引用某一行

在C語言二維數組中,第一個維數為行,第二個維數為列。因此第一維的數即是引用的行數,示例代碼如下 (vc6.0編譯通過)。


#include<stdio.h>
intmain()
{
inta[2][3]={1,2,3,4,5,6};
printf("列印第1行的數: ");
intinx;
for(inx=0;inx!=3;++inx)printf("%d ",a[0][inx]);
printf(" 列印第2行的數 ");
for(inx=0;inx!=3;++inx)printf("%d ",a[1][inx]);
printf(" ");
return0;
}

Ⅲ excel如何引用二維數組,並且參與計算!

可用index+match函數或者Vlookup+match函數
找到二維數組中的比熱容數據.

Ⅳ C語言中指針引用二維數組元素的問題

對於a[i][j](二維數組的大小為n×m)而言,
首先要搞清楚行指針和列指針
行指針:&a[i]或者a+i指向行,&a[i]=&*(a+i)=a+i
列指針:a[i]或*(a+i)指向列,a[i]等價於*(a+i)
元素的引用方式有如下三種方式
1.通過地址引用二維元素
*(&a[i][j]),
*(a[i]+j),
*(*(a+i)+j),
*(a[0]+m*i+j)
*(&a[0][0]+m*i+j)
(*(a+i))[j]
2.建立一個指針數組引用二維元素
int *p[3],a[3][2],i,j;
for(i=0;i<3;i++)
p[i]=a[i];//p[i]用來存放地址,a[i]為列地址
等價如下
(1) *(p[i]+j) 與*(a[i]+j)對應
(2)*(*(p+i)+j) 與*(*(a+i)+j)對應
(3)(*(p+i))[j] *(p[i]+j) 與*(a[i]+j)對應
(4)p[i][j] 與a[i][j]對應
3.建立一個行指針引用二維數組元素
int a[3][2],(*p)[2];
p=a;
(1) *(p[i]+j) 與*(a[i]+j)對應
(2)*(*(p+i)+j) 與*(*(a+i)+j)對應
(3)(*(p+i))[j] 與(*(a+i))[j]對應
(4)p[i][j] 與a[i][j]對應
例題如下
1.
#include<stdio.h>
main()
{
int score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
int i,j;
printf("輸入學生號:0-2");
scanf("%d",&i);
printf("the score of No.%d are:\n",i);
for(j=0;j<4;j++)
printf("%d\t",*(*(score+i)+j));//score+i為列指針,*(score+i)為行指針
printf("\n");
}
2.
#include<stdio.h>
main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p;
for(p=a[0];p<a[0]+12;p++)//使p依次指向下一個元素,a[i]和*(a+i)是指向列的指針;&a[i]或a+i是指向行的指針
{
if((p-a[0])%4==0)printf("\n");
printf("%4d",*p);//輸出p指向的數組元素的值
}
printf("\n");
}
3
#include<stdio.h>
main()
{
int score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
int i,j;
printf("輸入學生號:0-2");
scanf("%d",&i);
printf("the score of No.%d are:\n",i);
for(j=0;j<4;j++)
printf("%d\t",*(score[i]+j));
printf("\n");
}
4
#include<stdio.h>
main()
{
int score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
int i,j,*p;
printf("輸入學生號:");
scanf("%d",&i);
printf("the score of No.%d are:\n",i);
for(p=score[i];p<score[i]+4;p++)
printf("%d\t",*p);//p+i指向第i行,*(p+i)指向第i行0列元素*(p+i)+j指向第i行j列元素,是列地址
printf("\n");
}
5.
#include<stdio.h>
main()
{
int score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
int i,j,*p;
printf("輸入學生號:");
scanf("%d",&i);
printf("the score of No.%d are:\n",i);
for(p=score[i],j=0;j<4;j++)
printf("%d\t",*(p+j));
printf("\n");
}
6
#include<stdio.h>
main()
{
int score[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
int i,j,(*p)[4];//指針變數p指向包括4個整型元素的一維數組;
p=score;//p指向二維數組0行元素,p+1所指向的元素是p所指向元素的下一行元素;
printf("輸入學生號:0-2");
scanf("%d",&i);
printf("the score of No.%d are:\n",i);
for(j=0;j<4;j++)
printf("%d\t",*(*(p+i)+j));//p+i指向第i行,p是行指針,*(p+i)指向第i行0列元素,是列指針。*(p+i)+j指向第i行j列元素,是一個元素的地址
printf("\n");
}

Ⅳ c語言中二維數組的引用

您好,給你舉一個列子,
如我定義一個三行四列的數組, int a[3][4];
數組名為a,其下標變數的類型為整型。該數組的下標變數共有3×4個,即:
a[0][0],a[0][1],a[0][2],a[0][3]
a[1][0],a[1][1],a[1][2],a[1][3]
a[2][0],a[2][1],a[2][2],a[2][3]

調用方式即:a[行數][列數]

Ⅵ EXCEL的二維引用最多能引用多少張工作表數據

假設表1的數據在A:C列,表2的408在A2 B2輸入公式 =vlookup($a2,表1!$a:$c,column(b1),) 向右向下填充

Ⅶ 二維數組引用問題

事實上,全部都不是。
task_sp[0]=task_stack[0]+1;//這一句的左邊是一個字元型變數,而右邊確實一個指針,當然這里就有錯了,因為在二維數組中,可以把它分成一維數組來處理,所以你可以把task_stack[0]看成一個元素,而這個,就是一個行指針,是指向這個一維數組的指針。

如果改成task_sp[0]=*(task_stack[0]+1);則表示task_stack[0][1]

Ⅷ 誰能給我講講二維數組元素的引用啊都有那幾種方式啊

從根本來說我知道是二種, 因為按下標訪問和按指針的訪問其實是一樣的意義.
樓下說的 a[i][j],和*(*(a+i)+j)方式其實原理是一樣的.
一\ 這種是先確認行, 定址數組元素,是先把二維數組的每一行看成一個一維數組的元素,
然後再去分,每一行統領的那一列又作為一個一維數組.有二個步驟.
就好比給你一個門牌號, 303, 你知道門牌號的意義, 你會直接跑到三樓(按行再去找列)去找第三個房間.
二\還有一種是直接通過列去定址,只分一次, 直接把二維數組的所有元素看成一個一維數組的元素. 通過偏移量計算每個元素的值. 這時候輸出的方式就是p[i * n + j] 的方式了,(n的值是數組的列數) 而不是像第一種是 p[i][j]的方式.
這種方式是給你一個門牌號, 303, 你不知道門牌號的意義, 你會先從一樓開始一間一間的找, 然後二樓,三樓,這時候你發現找到了.
沒有時間答的很好,仔細, 如果你初學沒多久,看不太懂的話, 還是得自己去查資料學, 或者找好的課件,找老師去問. 這樣才能足夠確信, 加理解.
我這里能提供的就是,在你學習到理解一定程度後,你還知道還有另外個方向,這時候你可以再去往這個方向,靠自己探索,搞詳細,搞明白

Ⅸ 二維數組 的引用

void fun(double par[5][6],int a,int b)

Ⅹ 用指針引用二維數組元素

a 是數組首地址,等於 &a[0][0].
*p 聲明裡是指針。語句里 *p 是 指針指向的值。 語句里 p 是地址.

*p 是1個星號的指針,可以讓它指向1維數組,也可以讓有序地它指向2維數的各元素。
int a[行][列]; a[j][i] 數組元素排列 是:
第一行 的 第1列,第二列,第三列....
第二行 的 第1列,第二列,第三列....
第三行 的 第1列,第二列,第三列....

2維數可以看成1維數組,排成1字長蛇陣:第一行 的 第1列,第二列,第三列..;
第二行 的 第1列,第二列,第三列....;。。。。直到最後一行最後一列。
#define row 3
#define col 4
int a[row][col]; // 某一元素: a[j][i]
int *p,i,j;
排成1字長蛇陣後,一維下標,可以用二維 下標計算: j*col + i.
某一元素: a[j][i] 的 數值 就是 * (p+j*col+i);
----
寫出完整程序,依次輸出所有元素,對比:
#include <stdio.h>
main()
{
#define row 3
#define col 4
int a[row][col] = { 0,1,2,3,4,5,6,7,8,9,10,11};
int *p;
int i,j;
p=&a[0][0];
for (j=0;j<row;j++){
for (i=0;i<col;i++) printf("%2d ",a[j][i]);
printf("\n");
}

printf("===========\n");
for (j=0;j<row;j++){
for (i=0;i<col;i++) printf("%2d ", *(p+j*col+i));
printf("\n");
}
return 0;
}
======
如果 是 int **p; 才有 *(*(p+i)+j))形式。
對應 a[j][i], 指向的值 是 *(*(p+j) + i)

熱點內容
塗鴉論文 發布:2021-03-31 13:04:48 瀏覽:698
手機資料庫應用 發布:2021-03-31 13:04:28 瀏覽:353
版面217 發布:2021-03-31 13:04:18 瀏覽:587
知網不查的資源 發布:2021-03-31 13:03:43 瀏覽:713
基金贖回參考 發布:2021-03-31 13:02:08 瀏覽:489
懸疑故事範文 發布:2021-03-31 13:02:07 瀏覽:87
做簡單的自我介紹範文 發布:2021-03-31 13:01:48 瀏覽:537
戰略地圖參考 發布:2021-03-31 13:01:09 瀏覽:463
收支模板 發布:2021-03-31 13:00:43 瀏覽:17
電氣學術會議 發布:2021-03-31 13:00:32 瀏覽:731