最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C/C++編程筆記:C數(shù)組、字符串常量和指針!三分鐘弄懂它

2020-12-16 22:07 作者:C語言編程__Plus  | 我要投稿

想弄懂C語言中數(shù)組和指針的關(guān)系嗎?這篇文章就占據(jù)你三分鐘時間,看完你肯定會有收獲!


數(shù)組

數(shù)組聲明為?數(shù)據(jù)類型?名稱[?constant-size?],并將一個數(shù)據(jù)類型的一個或多個實例分組到一個可尋址的位置

constant-size可能是一個表達(dá)式,但是該表達(dá)式必須求值為常量,例如:

#定義MAX_SIZE 16

...

int列表[MAX_SIZE + 1];

C數(shù)組開始于元素0,所以像陣列定義?int a[3];將創(chuàng)建三個int元件,可尋址如a[0],a[1],和a[2]

????????請注意,即使定義很難說a[3],也沒有名為a[3]

與其他變量一樣,全局和靜態(tài)數(shù)組元素默認(rèn)情況下初始化為0,并且自動數(shù)組元素填充有垃圾值

可以使用大括號中的一個或多個值來初始化數(shù)組,例如:

int a[3] = {5, -2, 17};

????????ANSI C之前的編譯器可能不允許在自動數(shù)組上進(jìn)行初始化

如果存在初始化值列表,但未?指定常量大小,則數(shù)組的大小與初始化值的數(shù)目相同

int q[] = {1, 2, 3};?是相同的

int q[3] = {1, 2, 3};

要聲明對另一個文件中定義的數(shù)組的外部引用,請使用extern int a[];


字符串常量

在C語言中,類型數(shù)組char用于表示字符串,字符串的結(jié)尾由設(shè)置為0的字節(jié)標(biāo)記(也稱為NUL字符)

以下定義都將其數(shù)組設(shè)置為相同的值:

int str1 [] = {'a','b','c','\ 0'};

int str2 [] =“ abc”;

ANSI C還允許定義像int str[3] = "abc";?,其是相同的int str[3] = {'a', 'b', 'c'};?(省略了最終NUL字符)


多維數(shù)組

多維數(shù)組只是數(shù)組的數(shù)組(數(shù)組的數(shù)組...)

類似的多維數(shù)組m[3][2]存儲在連續(xù)的存儲位置中,例如m [0] [0],m [0] [1],m [1] [0],m [1] [1],m [2] [0] ,m [2] [1]


指針

指針是包含變量地址的變量

有兩個與指針關(guān)聯(lián)的運算符:

????????該&操作符返回其參數(shù)的地址

????????該*引用它的參數(shù)通過指針訪問對象指針

指針的一個簡單示例是:

int i,j;

int * p; / *指向'int'的指針* /

我= 6;

p =&i; / *將`p'設(shè)置為`i'的地址* /

j = * p; / *將'j'設(shè)置為6('i'的值)* /

* p = 5; / *將'i'設(shè)置為5 * /

指針可以包含一個地址或一個稱為空指針的特殊值,該值不同于所有有效指針

????????指針上下文中的0將在編譯時轉(zhuǎn)換為空指針

????????還有一個預(yù)處理器宏NULL(在<stdio.h>或中?定義?<stdlib.h>)

????????像expression這樣的表達(dá)式將導(dǎo)致?語句是否為空指針,因為它與相同,?并且由于在指針上下文中將其轉(zhuǎn)換為空指針,因此代碼將與空指針?進(jìn)行隱式比較if (!ptr)?statementptrif (ptr)if (ptr == 0)0ptr

同樣,將評估聲明,如果是不是一個空指針?if (ptr)?statementptr

指針不能指向:

常數(shù)(像3,不const類似s?const int a;)由于值3不具有永久的存儲器地址

register?變量,因為寄存器不在內(nèi)存中,因此沒有內(nèi)存地址

類似的表達(dá)式(8 * k),它們與常量大致相同,因為它們沒有永久的內(nèi)存地址


指針和數(shù)組

指針可以視為數(shù)組

這段代碼:

int main(void){

int a [3] = {6,3,7};

int * p =&a [0]; / *將`p'指向`a'的第一個元素* /

if(a [0] == p [0] && a [1] == p [1] && a [2] == p [2])

return 1;

else??

return?0;

}

將返回1,因為指向?n的所有有效值p[n]a[n]

指針是沒有,不過,同為數(shù)組

這是C語言最令人困惑的部分之一,因此這里有三種不同的方式來說明數(shù)組a?與指向p第一個元素的指針之間的區(qū)別a?:

技術(shù)說明:使用直接尋址訪問數(shù)組,使用間接尋址訪問指針

較少技術(shù)的解釋:a是一個地址,?p是一個保存以下地址的地址a

極其羅嗦解釋:檢索值從?,在計算機(jī)啟動時的地址,移動?過去,并獲取價值從那里;?要從中檢索值,計算機(jī)將從地址開始,獲取存儲在其中的地址并向其添加n,然后從結(jié)果地址中?獲取值a[n]ap[n]p

但是,在大多數(shù)情況下,指針和數(shù)組訪問可被視為具有相同的作用,主要的例外是:

1)sizeof 運算符

sizeof(array)?返回所有元素中使用的內(nèi)存量?array

sizeof(pointer)僅返回pointer變量本身使用的內(nèi)存量

2)&運算符

&array是的別名,&array[0]并返回中第一個元素的地址array

&pointer?返回的地址?pointer

3)字符數(shù)組的字符串文字初始化

char array[] = "abc"將前四個元素設(shè)置?array為'a','b','c'和'\ 0'

char *pointer = "abc"設(shè)置pointer為“ abc”字符串的地址(可能存儲在只讀存儲器中,因此不可更改)

此外,無法調(diào)整數(shù)組大小或重新分配數(shù)組。

另外如果你想更好的提升你的編程能力,學(xué)好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~

UP在主頁上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會對你有幫助的~

分享(源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)

歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!

編程學(xué)習(xí)書籍分享:


編程學(xué)習(xí)視頻分享:



C/C++編程筆記:C數(shù)組、字符串常量和指針!三分鐘弄懂它的評論 (共 條)

分享到微博請遵守國家法律
土默特左旗| 错那县| 清涧县| 安康市| 正安县| 邹平县| 长武县| 桦川县| 临海市| 鄂托克前旗| 高淳县| 山东| 朝阳区| 仙游县| 承德市| 河间市| 威海市| 凤凰县| 边坝县| 志丹县| 类乌齐县| 榆中县| 大荔县| 峨眉山市| 马公市| 焉耆| 毕节市| 天柱县| 丰顺县| 蚌埠市| 延安市| 肃南| 千阳县| 夹江县| 汕尾市| 长葛市| 无极县| 若尔盖县| 景泰县| 孟津县| 阿城市|