c語言二維數組指針
㈠ c語言怎麼用指針代替二維數組
1.設p是指向二維數組a[m][n]的指針變數,則有:
int* p=a[0];//此時P是指向一維數組的指針。P++後,p指向 a[0][1]。
2.如果定義int (*p1)[n];p1=a;p1++後,p1指向a[1][0];
則p+j將指向a[0]數組中的元素a[0][j]。
由於a[0]、a[1]┅a[M-1]等各個行數組依次連續存儲,則對於a數組中的任一元素a[i][j],指針的一般形式如下:
p+i*N+j,相應的如果用p1來表示,則為*(p1+i)+j。
元素a[i][j]相應的指針表示為:
*( p+i*N+j),相應的如果用p1來表示,則為*(*(p1+i)+j)。
同樣,a[i][j]也可使用指針下標法表示,如p[i*N+j]。
若有:
int *p=a[0];
則數組a的元素a[1][2]對應的指針為:p+1*4+2
元素a[1][2]也就可以表示為:*( p+1*4+2)
用下標表示法,a[1][2]表示為:p[1*4+2]
(1)c語言二維數組指針擴展閱讀:
指針與數組的關系:
1.指針數組:就是一個由指針組成的數組,那個數組的各個元素都是指針,指向某個內存地址。char *p[10]; //p是一個指針數組
2.數組指針:數組名本身就是一個指針,指向數組的首地址。注意這是一個常數。
example:
char (*p)[10]; //p是一個數組指針
3.函數指針:本身是一個指針,指向一個函數入口地址,通過該指針可調用其指向的函數,使用函數指針可實現回調函數。
網路-指針
㈡ c語言二維數組的指針
先用一個指針類型把這個返回值進行接受,然後再向你的那個二維數組賦值,記得要把那個指針free掉
char*
temp;
temp
=
returnPointer();
strcpy(a[i],
temp);
free(temp):
㈢ 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列的元素。
(3)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函數逐個對數組元素賦值。
網路-數組