c語言中函數(shù)聲明指針數(shù)組 c語言函數(shù)調(diào)用數(shù)組指針

C語言結(jié)構(gòu)體指針數(shù)組怎么聲明

我說明寫在案例的備注里,你參考吧。

巫山ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

#includestdio.h

typedef?struct?st

{

int?id;

}ST,*STP;?//先定義類型???ST是結(jié)構(gòu)類型???STP是結(jié)構(gòu)指針類型

int?main()

{

STP?st[2];//這里st就是你要的結(jié)構(gòu)指針數(shù)組

ST?st1,st2;//這里我定義了2個結(jié)構(gòu)變量,并賦值,讓指針數(shù)組的元素分別指向這兩個變量地址

st1.id=1;st2.id=2;

st[0]=st1;

st[1]=st2;

printf("%d,%d\n",st[0]-id,st[1]-id);//打印指針數(shù)組指向地址內(nèi)容

return?0;

}

c語言中如何定義動態(tài)指針數(shù)組

1、使用malloc函數(shù),先分配第一維的大小,然后再循環(huán)分配每一維的大小。

2、例程,分配3行4列二維數(shù)組:

#include?stdio.h

#include?malloc.h

int?main()

{

int?**a;

int?i,?j;

a?=?(int**)malloc(sizeof(int*)*3);//為二維數(shù)組分配3行

for?(i?=?0;?i??3;?++i){//為每列分配4個大小空間

a[i]?=?(int*)malloc(sizeof(int)*4);

}

//初始化

for?(i?=?0;?i??3;?++i){

for?(j?=?0;?j??4;?++j){

a[i][j]?=?i+j;

}

}

//輸出測試

for?(i?=?0;?i??3;?++i){

for?(j?=?0;?j??4;?++j){

printf?("%d?",?a[i][j]);

}

printf?("\n");

}

//釋放動態(tài)開辟的空間

for?(i?=?0;?i??3;?++i){

free(a[i]);

}

free(a);

return?0;

}

/*

輸出:

0?1?2?3

1?2?3?4

2?3?4?5

*/

請問在C語言中,函數(shù)傳參時怎樣利用指針傳遞數(shù)組

數(shù)組名就是指針,例如:

#include stdio.h

void?pr(char *p)

{

printf(p);

}

void main(void)

{

char s[] = "abc";

pr(s);

}

擴展資料:

注意事項

非數(shù)組類的聲明盡量以指針的方式進行比較好。倘若一個指針指向的內(nèi)存并不是一個數(shù)組,那么采用數(shù)組名的聲明方式或許就會給人產(chǎn)生錯誤的引導(dǎo)。類似的,如果指向的是一個數(shù)組區(qū)域,則會給人以更加豐富的信息。例如:

int main(int argc,char* argv[])

{

/* code here */

}

int main(int argc,char** argv)

{

/* code here */

}

兩種方式完全等價,但是前面一種能夠更清晰地看出:這個參數(shù)是指向某個元素起始地址的指針,而后面的這種方式則不能夠直觀地看出這種含義。

c語言中,聲明一個指針數(shù)組,char *s[1024 ] ,但并沒有對它初始化,那它里面的都是空指

c語言中,聲明一個指針數(shù)組,char *s[1024 ] ,但并沒有對它初始化,那它里面的數(shù)據(jù)(指針)是不確定的!

如果是全局變量,則里面的指針全是空指針

如果是局部變量,則里面的數(shù)據(jù)是不確定值,就象普通數(shù)組和變量一樣,是不確定的數(shù)值。

C語言中,如何定義一個‘指針數(shù)組’,這個‘指針數(shù)組’專門用來存放‘數(shù)組指針’。

指針數(shù)組定義int*p[n];

[]優(yōu)先級高,先與p結(jié)合成為一個數(shù)組,再由int*說明這是一個整型指針數(shù)組,它有n個指針類型的數(shù)組元素。這里執(zhí)行p+1時,則p指向下一個數(shù)組元素,

這樣賦值是錯誤的:p=a;因為p是個不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它們分別是指針變量可以用來存放變量地址。但可以這樣*p=a;這里*p表示指針數(shù)組第一個元素的值,a的首地址的值。

數(shù)組指針定義int(*p)[n];

()優(yōu)先級高,首先說明p是一個指針,指向一個整型的一維數(shù)組,這個一維數(shù)組的長度是n,也可以說是p的步長。也就是說執(zhí)行p+1時,p要跨過n個整型數(shù)據(jù)的長度。

如要將二維數(shù)組賦給一指針,應(yīng)這樣賦值:

int a[3][4];

int(*p)[4];//該語句是定義一個數(shù)組指針,指向含4個元素的一維數(shù)組。

p=a;//將該二維數(shù)組的首地址賦給p,也就是a[0]或a[0][0]

p++;//該語句執(zhí)行過后,也就是p=p+1;p跨過行a[0][]指向了行a[1][]

擴展資料:

與數(shù)組指針關(guān)系

數(shù)組指針是指向數(shù)組首元素的地址的指針,其本質(zhì)為指針(這個指針存放的是數(shù)組首地址的地址,相當于2級指針,這個指針不可移動);指針數(shù)組是數(shù)組元素為指針的數(shù)組,其本質(zhì)為數(shù)組。

例如:*p[2]是指針數(shù)組,實質(zhì)是一個數(shù)組,里面的兩個元素都是指針,[]的優(yōu)先級比*的優(yōu)先級高,p先與[]結(jié)合,形成數(shù)組p[2],有兩個元素的數(shù)組,再與*結(jié)合,表示此數(shù)組是指針類型的,每個數(shù)組元素相當于一個指針變量

與二維數(shù)組對比

二維數(shù)組:如char string_1[10][10]只要定義了一個二維數(shù)組,無論賦不賦值,系統(tǒng)都會給他分配相應(yīng)空間,而且該空間一定是連續(xù)的。其每個元素表示一個字符。我們可以通過指定下標對其元素進行修改。

指針數(shù)組:如char*str_B[5]系統(tǒng)至少會分配5個連續(xù)的空間用來存儲5個元素,表示str_B是一個5個元素的數(shù)組,每個元素是一個指向字符型數(shù)據(jù)的一個指針。

如果我做這樣的定義:

char a[3][8]={"gain","much","strong"};

char*n[3]={"gain","much","strong"};

他們在內(nèi)存的存儲方式分別如右圖所示,可見,系統(tǒng)給數(shù)組a分配了

3×8的空間,而給n分配的空間則取決于具體字符串的長度。

此外,系統(tǒng)分配給a的空間是連續(xù)的,而給n分配的空間則不一定連續(xù)。

由此可見,相比于比二維字符數(shù)組,指針數(shù)組有明顯的優(yōu)點:一是指針數(shù)組中每個元素所指的字符串不必限制在相同的字符長度;二是訪問指針數(shù)組中的一個元素是用指針間接進行的,效率比下標方式要高。但是二維字符數(shù)組卻可以通過下標很方便的修改某一元素的值,而指針數(shù)組卻無法這么做。

舉例編輯

數(shù)組指針:

#includelt;stdio.hgt;

int main()

{

char c[][4]={"哥","哥","我","岸","上","走"};//UTF-8:一個漢字=3個字節(jié)

char(*p)[4];

int i;p=c;//將指針定位于c[0]

for(i=0;ilt;=5;i++)

{

printf("%s,",*(p+i));//或者將*(p+i)替換成*p++

}

printf("\n");

for(i=5;igt;=0;i--)

{

printf("%s,",*(p+i));//或者將*(p+i)替換成*--p

}

return 0;

}

指針數(shù)組:

#includelt;stdio.hgt;

int main()

{

int i;

char*pch[6]={"妹","妹","你","坐","船","頭"};

for(i=0;ilt;6;i++){

printf("%s,",pchlt;igt;);

}

printf("\n");

for(i=5;igt;=0;i--){

printf("%s\n",pchlt;igt;);

}

return 0;

}

參考資料:

百度百科——指針數(shù)組

C語言指向 字符串數(shù)組 的指針 的聲明方式

#include stdio.h

int main(void)

{

char * test[] = {"1111", "2222", "3333"};

char * p[][3] = {{"1111", "2222", "3333"}};

puts(p[0][0]);

return 0;

}

//注意char * (*p)[] = 。。。 并不是聲明數(shù)組,聲明數(shù)組的方式是char * p[][3] = {{},{},{}...};

//char * (*p)[]只是聲明變量,常用作函數(shù)的聲明中作為形參來使用。

當前標題:c語言中函數(shù)聲明指針數(shù)組 c語言函數(shù)調(diào)用數(shù)組指針
路徑分享:http://www.muchs.cn/article20/docsjco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、用戶體驗、網(wǎng)站導(dǎo)航建站公司、標簽優(yōu)化網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站