當前位置:首頁 » 編程語言 » c語言二維指針數組

c語言二維指針數組

發布時間: 2022-06-22 19:42:54

『壹』 c語言如何定義指針指向字元型二維數組

使用指針變數訪問二維數組的任意一個元素的方法:

1.使用列指針:定義一個列指針p,讓它指向二維數組的第0個元素

int a[3][4];

int *p;

p=&a[0][0];

//因為a[0]是第0行的數組名,所以p=&a[0][0]相當於p=a[0],因為a[i][j]前面共有i*4+j個元素

該二維數組的任意i行j列元素可表示為*(p+i*4+j)。

2.使用行指針:定義一個行指針p,讓它指向二維數組的第0行

int a[3][4];

int (*p)[4];

p=a; //也可以為p=&a[0];

其中* ( *(p+i)+j)表示任意一個i行j列的元素。

(1)c語言二維指針數組擴展閱讀:

數組的使用規則:

1.可以只給部分元素賦初值。當{ }中值的個數少於元素個數時,只給前面部分元素賦值。例如:static int a[10]={0,1,2,3,4};表示只給a[0]~a[4]5個元素賦值,而後5個元素自動賦0值。

2.只能給元素逐個賦值,不能給數組整體賦值。例如給十個元素全部賦1值,只能寫為:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能寫為:static int a[10]=1;請注意:在C、C#語言中是這樣,但並非在所有涉及數組的地方都這樣,資料庫是從1開始。

3.如不給可初始化的數組賦初值,則全部元素均為0值。

4.如給全部元素賦值,則在數組說明中, 可以不給出數組元素的個數。例如:static int a[5]={1,2,3,4,5};可寫為:static int a[]={1,2,3,4,5};動態賦值可以在程序執行過程中,對數組作動態賦值。這時可用循環語句配合scanf函數逐個對數組元素賦值。

網路-數組

『貳』 C語言二維數組指針

樓主你好:
二維數組的指針不難理解。
請參看我的帖子:
http://..com/question/128766724.html
是關於指針的 很通俗易懂 的解釋!
有不明白的,QQ我就可以了。
QQ:270495267

倒數第四行*(*(a+2)+2)就等價於你寫的*(*board+i))
其實就是*board[i]。

*board 就相當於 board[0][0] 的 地址 ,也就是&board[0][0]

『叄』 C語言指向二維數組的指針

一、你的 float score 數組定義的是:一個3行、4列的二維浮點數組,數組的元素為浮點數。如果你換個格式書寫就清晰了!
float score[3][4]={{65,67,70,60,},{80,87,90,81,},{90,99,100,98}};
在調用的過程中,score 就是這個數組的首地址,指向的是浮點數組{65,67,70,60,}。score + 1 指向的是數組{80,87,90,81,}。
二、你的 float *p 定義的是:一個指向浮點數的指針。這個是一維的。
在調用的過程中,float 指向的是 xx。一個浮點數字。
兩個的定義不同,所以參數傳遞過程中會出錯。
三、你的 float (*p)[4] 定義的是:一個指向含有四個元素的浮點數組的指針。
在調用的過程中,float 指向的是{xxx,xx,xx,xx,},由四個浮點數組成的數組。
這時兩個定義相同,所以參數傳遞過程中沒有錯誤。
四、有個建議,你的程序書寫格式不清晰,不利於你糾錯和修改,應該盡量的清晰、明確,不建議使用簡化方式定義參數。
作為一個軟體工作者,應該盡量使程序流暢、格式清晰、易讀,這是一個軟體工作者最基本的職業素養。
格式化後,程序如下,會清晰很多:
#include<stdio.h>
void main()
{
void search (float (*p)[4],int n);/*這里的 float *p 好像有問題*/
float score[3][4]={{65,67,70,60,},{80,87,90,81,},{90,99,100,98}};
search(score,2);
}
void search(float (*p)[4],int n)/*這里的 float *p 好像有問題*/
{
int i;
printf("the score of No.%d are:\n",n);
for(i=0;i<4;i++)
{
printf("%5.2f",*(*(p+n)+i));
}
printf("\n");
}

『肆』 C語言指針與二維數組

a是二維數組名,其字面值是該數組的起始地址,該地址同時也是一維數組a[0]的起始地址

所以a,*a,a[0],&a[0]的字面值都相同,a[0][0]就是首個元素


剩下的幾行輸出同理,無非就是行指針偏移的+1是以第二維的大小移動的而已

『伍』 c語言中二維數組的指針如何表示

比如定義一個int型的二維數組,如下:
int **p;
或者
int p[MAX_ROW][MAX_LINE];
不同的是前者定義了一個int型二維數組的指針,編寫器知道該指針的移動方式以int為單位,但此時該指針為NULL,即沒有與內存中的物理單元進行對應。使用指針前需要用malloc()為該指針分配一段內存空間,內存空間的大小在malloc()的參數中指定,系統會為該指針分配一段空閑內存供該指針使用。或者將你的程序中其他int類型的指針賦值給該指針使其映射到內存物理單元。在程序結束或不在需要使用該指針時需要使用free()將該指針所映射內存釋放。
後者在定義時為該指針分配了MAX_ROW*MAX_LINE個int大小的空間映射到內存,之後就可以直接使用了。

『陸』 c語言裡面怎麼用指針表示二維字元數組

二維數組就是數組的數組,二維數組即數組的元素是一維數組的數組。那麼我們要用指針指向二維數組,就是要定義一個指向數組的指針了。例如:

charstr[3][10];//定義了一個char型的二維數組
char(*pstr)[10];//定義了一個指向char型的數組指針
pstr=str;//指針指向二維數組str

下面用pstr這個指針對二維數組進行賦值操作

inti;
for(i=0;i<3;i++)
scanf("%s",*(p+i));//*(p+i)等價於str[i]

『柒』 C語言二維數組指針變數是什麼int (*p)[2]什麼意思

c語言比較靈活,C語言的指針更加靈活多變,int (*p)[2]是一個整型的指針型一維數組,表示兩個元素,具體如下,

數組指針變數形式如下:

類型名 (*數組名)[數組行數][數組列數]
int (*p)[2]表示定義一個數組指針,指針指向的地址就需要後續程序給出,不然會變為野指針。

『捌』 C語言二維數組指針變數是什麼,int (*p)[2]什麼意思

二維數組指針變數形式如下:
類型名
(*數組名)[數組行數][數組列數]
如:int
(*p)[2][3];
//
定義一個int類型的二維數組指針變數,數組中每個元素都是一個指針
int
(*p)[2]表示定義一個數組指針,只是是一個一維的數組指針,數組中每個元素(共2個元素)都是一個int類型的指針變數,指針指向的地址就需要後續程序給出,不然會變為野指針。

『玖』 C語言 如何定義一個二維指針數組

定義二維指針數組與定義一維指針數組差不多,只是矩陣的維度增加了一維而已。


下面通過具體的實例來說明如何定義一個二維數組

int*p[2][3];//定義一個二維數組,只是定義,並沒有分配地址空間
inti,j;//數組的行數和列數
//下面的2個for循環是用來對二維指針數組進行初始化的,也即分配地址。如果不進行初始化操作,就會使指針變為野指針(即指向不明)。
for(i=0;i<2;i++)
for(j=0;j<3;j++)
p[i][j]=(int*)malloc(sizeof(int));
*p[0][1]=2;//對指針數組中指針所指向的內存單元進行賦值操作
printf("%d ",*p[0][1]);//輸出結果

『拾』 C語言關於二維數組指針表示方法

雖然說「首地址
=
array[0]=&array[0][0]」,這只代表他們的值相同,意義不同的。
array是二維指針變數,array[0]是一維指針變數,&array[0][0]是變數的地址。
*array
表示二維指針前加*
等於一維指針array[0],值還是以前的值,但是意義不同。

熱點內容
源碼地帶 發布:2025-02-05 18:46:37 瀏覽:613
我的世界伺服器怎麼騎別人的頭 發布:2025-02-05 18:46:32 瀏覽:89
怎麼卸載ftp賬號 發布:2025-02-05 18:41:52 瀏覽:62
SQL指定的服務並未以 發布:2025-02-05 18:40:09 瀏覽:972
電腦連接不了伺服器什麼意思 發布:2025-02-05 18:34:46 瀏覽:355
2015版dw怎麼配置站點 發布:2025-02-05 18:33:37 瀏覽:429
php數組中重復值 發布:2025-02-05 18:16:59 瀏覽:366
分布式存儲優點 發布:2025-02-05 18:15:29 瀏覽:644
徵婚交友源碼 發布:2025-02-05 17:45:24 瀏覽:918
3nvm伺服器怎麼搭建 發布:2025-02-05 17:43:52 瀏覽:661