第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

c語言什么時(shí)候使用數(shù)組,什么時(shí)候使用指針?

c語言什么時(shí)候使用數(shù)組,什么時(shí)候使用指針?

C
青春有我 2019-04-09 05:04:36
c語言什么時(shí)候使用數(shù)組,什么時(shí)候使用指針?
查看完整描述

4 回答

?
富國滬深

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊

任何時(shí)候都可以使用數(shù)組,使用指針。

定義時(shí),通常只有字符指針,和字符數(shù)組指針直接定義。用來表示字符串或字符串?dāng)?shù)組。
其他一般定義數(shù)組。操作時(shí)用指針或數(shù)組。

其他指針,多半用在參數(shù)傳遞,數(shù)據(jù)結(jié)構(gòu)內(nèi)部(不確定需要內(nèi)存的大小,或者鏈表,二叉樹等鏈?zhǔn)浇Y(jié)構(gòu))的時(shí)候。
還有一種是有些函數(shù)參數(shù)就是指針,這時(shí)定義一個(gè)指針,來操作傳進(jìn)來的指針參數(shù)比較好。

指針作為參數(shù),有一下幾種用法,

1)當(dāng)作數(shù)組用,用來獲取或設(shè)置數(shù)組元素。
2)把一個(gè)比較長的數(shù)據(jù)結(jié)構(gòu)傳入函數(shù),只需要一個(gè)指針就夠了。
3)傳入變量的地址,用來讀取或修改變量的值,主要是為了修改用。

直接定義一個(gè)不指向任何對(duì)象的指針,并且也從不給他賦值,沒什么意義;

指針要么指向數(shù)組,要么指向變量,要么動(dòng)態(tài)申請(qǐng)內(nèi)存。
NULL指針,只是一個(gè)方便的指針,表示不指向任何對(duì)象。

真正有用的還是指向具體對(duì)象的指針。
如果定義了一個(gè)指針,使用時(shí)要讓他指向一個(gè)具體對(duì)象,當(dāng)需要他不指向什么對(duì)象的時(shí)候,給他賦值為NULL;
PS:
C語言,數(shù)組名只是一個(gè)指針常量而已,離開定義可見處,數(shù)組大小的信息就不存在了。
只有定義完全可見的地方,才可以獲得數(shù)組的大小。
數(shù)組作為函數(shù)的參數(shù),和外部引用聲明都不能獲得數(shù)組的大小。
參數(shù)只能傳遞指針,參數(shù)的大小只是指針的大小;
只能看到聲明的地方,獲取數(shù)組大小的努力,只能換來錯(cuò)誤。

void fun1(int a[10]) //<==> void fun1(int a[]) <==>void fun1(int *a)
{
}
void fun2(int [10][10])// <==>void fun2(int a[][10])<==> void fun2(int (*a)[10])
{
}




查看完整回答
反對(duì) 回復(fù) 2019-04-10
?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊

個(gè)人認(rèn)為,當(dāng)你需要某一變量需要一直存在的話,那么程序初始化時(shí)就可以直接使用數(shù)組之類的;
而當(dāng)你需要對(duì)已存在于內(nèi)存的某些量做改變時(shí),則適宜使用指針。
這里需要注意的是,使用數(shù)組的前提是內(nèi)存靜態(tài)分配,其大小是不可改變的;所以若要求動(dòng)態(tài)分配的話,還是需要使用指針的。希望對(duì)你有所幫助。

查看完整回答
反對(duì) 回復(fù) 2019-04-10
?
慕勒3428872

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊

數(shù)組指針--指向數(shù)組的指針,是一個(gè)指針,其指向的類型是數(shù)組;指針數(shù)組--元素為指針的數(shù)組,是一個(gè)數(shù)組,其中的元素為指針。仔細(xì)研讀下面的程序:
#include <stdio.h>

int
main(void)
{
int a[2][2] = {{1,2},{3,4}};
int (* p)[2];
char * s[2] = {"hello", "world"};

p = a;
printf("%d, %d, %d, %d\n", (*p)[0], (*p)[1], (*(p+1))[0], (*(p+1))[1]);
printf("%s %s\n", s[0], s[1]);

return 0;
}


查看完整回答
反對(duì) 回復(fù) 2019-04-10
?
千巷貓影

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

如果你想靜態(tài)定義的時(shí)候你可以使用數(shù)組,動(dòng)態(tài)定義的話可以使用指針,可以通過關(guān)鍵字new來給指針分配內(nèi)存空間,例如,
char arr[10] 你無論用不用得完這數(shù)組,這空間都會(huì)被占用
但是如果你定義 char *arr;
然后再根據(jù)你要存的數(shù)據(jù)的大少分配內(nèi)存,就省空間咯!

查看完整回答
反對(duì) 回復(fù) 2019-04-10
  • 4 回答
  • 0 關(guān)注
  • 1096 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)