欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)激活碼778899分享:c++ FX-數(shù)組的使用

柚子快報(bào)激活碼778899分享:c++ FX-數(shù)組的使用

http://yzkb.51969.com/

1一維數(shù)組

1.1一維數(shù)組的創(chuàng)建和初始化

1.1.1數(shù)組的創(chuàng)建

//代碼1

int arr1[10];

char arr2[10];

float arr3[1];

double arr4[20];

//代碼2

//用宏定義的方式

#define X 3

int arr5[X];

//代碼3

//錯(cuò)誤使用

int count = 10;

int arr6[count];//數(shù)組時(shí)候可以正常創(chuàng)建?

注:數(shù)組創(chuàng)建, [] 中要給一個(gè)常量才可以,不能使用變量??梢灾苯佑贸A?,或者使用宏定義。

1.1.2數(shù)組的初始化

//1.數(shù)組大小和數(shù)值個(gè)數(shù)一致

int arr1[5] = {1,2,3,4,5}; 1 2 3 4 5

//2.數(shù)組大小大于初始數(shù)

int arr2[6] = {1,2,3}; 1 2 3 0 0 0

//3.不指定數(shù)組大小

int arr3[] = {1,2,3,4}; 1 2 3 4

//4.不指定字符數(shù)組大小

char arr5[] = {'a','b','c'}; a b c

//5.1字符數(shù)組存儲字符串

char arr6[] = "abcdef"; a b c d e f \0

//5.2字符數(shù)組的大小和字符串字符個(gè)數(shù)一致時(shí)

char arr6[6] = "abcdef"; a b c d e f

!!這樣初始化是有問題的,因?yàn)闊o法正常讀取字符串的結(jié)束標(biāo)志('\0'),導(dǎo)致字符串的長度和內(nèi)容不能得知!!

//6.字符數(shù)組大小大于字符串中的字符數(shù)

char arr7[6] = "zxc"; z x c \0 \0 \0

結(jié)論

數(shù)組是具有相同類型的集合,數(shù)組的大?。此甲止?jié)數(shù))由元素個(gè)數(shù)乘以單個(gè)元素的大小。數(shù)組只能夠整體初始化,不能被整體賦值。只能使用循環(huán)從第一個(gè)逐個(gè)遍歷賦值。初始化時(shí),數(shù)組的維度或元素個(gè)數(shù)可忽略 ,編譯器會根據(jù)花括號中元素個(gè)數(shù)初始化數(shù)組元素的個(gè)數(shù)。當(dāng)花括號中用于初始化值的個(gè)數(shù)不足數(shù)組元素大小時(shí),數(shù)組剩下的元素依次用0初始化。字符型數(shù)組在計(jì)算機(jī)內(nèi)部用的時(shí)對應(yīng)的ascii碼值進(jìn)行存儲的。一般用”“引起的字符串,不用數(shù)組保存時(shí),一般都被直接編譯到字符常量區(qū),并且不可被修改。

在內(nèi)存中的存儲

?1.2一維數(shù)組的使用

#include

int main()

{

int arr[10] = { 0 };//數(shù)組的不完全初始化

//計(jì)算數(shù)組的元素個(gè)數(shù)

int sz = sizeof(arr) / sizeof(arr[0]);

//對數(shù)組內(nèi)容賦值,數(shù)組是使用下標(biāo)來訪問的,下標(biāo)從0開始。所以:

int i = 0;//做下標(biāo),此時(shí)可以是變量

for (i = 0; i < 10; i++)

{

arr[i] = i;

}

//輸出數(shù)組的內(nèi)容

for (i = 0; i < 10; ++i)

{

printf("%d ", arr[i]);

}

return 0;

}

注意:

sizeof()操作符用于取長度,以字節(jié)為單位。sizeof(數(shù)組名)即求的時(shí)整個(gè)數(shù)組的大小。sizeof(首元素)即求數(shù)組單個(gè)元素大小。用0下標(biāo),是因?yàn)閿?shù)組至少存在一個(gè)有效元素,所以0下標(biāo)永遠(yuǎn)存在。 數(shù)組是使用下標(biāo)來訪問的,下標(biāo)是從0開始。 數(shù)組的大小可以通過計(jì)算得到。建議采用sizeof(arr)/sizeof(arr[0])這種方式。

1.3一維數(shù)組在內(nèi)存中的存儲

#include

int main()

{

int arr[10] = { 0 };

int size = sizeof(arr) / sizeof(arr[0]);

for (int i = 0; i < size; ++i)

{

printf("&arr[%d] = %p\n", i, &arr[i]);

}

return 0;

}

仔細(xì)觀察輸出的結(jié)果,可知隨著數(shù)組下標(biāo)的增長,元素的地址,也在有規(guī)律的遞增。 由此可以得 出結(jié)論:數(shù)組在內(nèi)存中是連續(xù)存放的。

?

總結(jié):

數(shù)組在內(nèi)存中開辟是線性連續(xù)且遞增的。在c語言中,任何變量(基本變量,指針變量,結(jié)構(gòu)體變量,數(shù)組變量)的空間都是整體開辟,但任何元素的起始地址一定是開辟字節(jié)當(dāng)中最小的。

?2.二維數(shù)組

2.1二維數(shù)組的創(chuàng)建和初始化

2.1.1二維數(shù)組的創(chuàng)建

//數(shù)組創(chuàng)建

int arr[3][4];//[行數(shù)][列數(shù)]

char arr[][5];

double arr[2][4];

?二維數(shù)組創(chuàng)建時(shí),行數(shù)可以忽略不寫。并且所有維度的數(shù)組其第一個(gè)方括號的內(nèi)容可忽略。

2.1.2二維數(shù)組的初始化

//數(shù)組初始化

int arr[3][4] = {1,2,3,4};

int arr[3][4] = {{1,2},{4,5}};

int arr[][4] = {{2,3},{4,5}};

注意: 花括號中的一個(gè)花括號代表一個(gè)一維數(shù)組的初始化。當(dāng)里面無花括號分組時(shí),按照順序從第一個(gè)開始逐個(gè)進(jìn)行初始化。余下的未賦值的元素用0初始化。

2.2二維數(shù)組的使用

二維數(shù)組的使用也是通過下標(biāo)的方式,用雙重循環(huán)嵌套進(jìn)行索引使用。

#include

int main()

{

int arr[3][4] = { 0 };

int i = 0;

for (i = 0; i < 3; i++)

{

int j = 0;

for (j = 0; j < 4; j++)

{

arr[i][j] = i * 4 + j;

}

}

for (i = 0; i < 3; i++)

{

int j = 0;

for (j = 0; j < 4; j++)

{

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

}

}

return 0;

}

2.3二維數(shù)組在內(nèi)存中的存儲

#include

int main()

{

int arr[3][4];

int i = 0;

for (i = 0; i < 3; i++)

{

int j = 0;

for (j = 0; j < 4; j++)

{

printf("&arr[%d][%d] = %p\n", i, j, &arr[i][j]);

}

}

return 0;

}

通過結(jié)果我們可以分析到,其實(shí)二維數(shù)組在內(nèi)存中也是連續(xù)存儲的。

?

注意:

二維數(shù)組在內(nèi)存的空間布局上,也是線性連續(xù)且遞增的?。?!二維數(shù)組本質(zhì)上也是一維數(shù)組,只不過內(nèi)部元素放的是一維數(shù)組。

3.數(shù)組作為參數(shù)

調(diào)用函數(shù)傳參數(shù)組時(shí),減少函數(shù)傳數(shù)組時(shí)的成本問題(時(shí)間和空間)。因?yàn)閭鲄r(shí),需要臨時(shí)拷貝,如果數(shù)組過大,可能會浪費(fèi)資源,嚴(yán)重的話可能棧溢出。數(shù)組元素降維成指向數(shù)組內(nèi)部元素類型的指針。對指針加一,加上所指向的類型的大小。

?3.1一維數(shù)組

#include

void Lisa(int arr[])

{

printf("a = %d\n", sizeof(arr));//數(shù)組降維成指針后的指針大小,在32位系統(tǒng)下指針都為4字節(jié)

printf("b = %d\n", sizeof(arr[0]));//數(shù)組首元素的大小

printf("sz =a / b = %d\n", sizeof(arr) / sizeof(arr[0]));//大小為1

printf("arr = %p\n", arr);//數(shù)組首元素地址

printf("&arr = %p\n", &arr);//指針的地址

printf("arr + 1 = %p\n", arr + 1);//下一個(gè)元素的地址

printf("&arr + 1 = %p\n", &arr + 1);//指針下一項(xiàng)的地址

}

int main(void)

{

int Shuzu[10] = { 0,1,2,3,4,5,6,7,8,9 };

printf("a = %d\n", sizeof(Shuzu));//數(shù)組總大小

printf("b = %d\n", sizeof(Shuzu[0]));//數(shù)組首元素大小

printf("sz =a / b = %d\n", sizeof(Shuzu) / sizeof(Shuzu[0]));//數(shù)組元素個(gè)數(shù)

printf("Shuzu = %p\n", Shuzu);//數(shù)組首元素地址

printf("&Shuzu = %p\n", &Shuzu);//代表整個(gè)數(shù)組,但是地址仍是首元素地址

printf("Shuzu + 1 = %p\n", Shuzu + 1);//下一個(gè)元素的地址

printf("&Shuzu + 1 = %p\n", &Shuzu + 1);//跳過整個(gè)數(shù)組后緊挨著的地址

//此時(shí)該地址減去首元素地址等于數(shù)組大小

printf("\n\n");

Lisa(Shuzu);

return 0;

}

補(bǔ)充

sizeof(數(shù)組名),計(jì)算整個(gè)數(shù)組的大小,sizeof內(nèi)部單獨(dú)放一個(gè)數(shù)組名,數(shù)組名表示整個(gè)數(shù)組。&數(shù)組名,取出的是數(shù)組的地址。&數(shù)組名,數(shù)組名表示整個(gè)數(shù)組。

?

?

總結(jié):

形參格式,例如int arr[ ]或者int *arr,兩者等價(jià)形參元素個(gè)數(shù)可被忽略,并且建議忽略(有可能改變了實(shí)參的大小,這樣比較方便)?;蛘咭部梢蕴顚懕葘?shí)參元素個(gè)數(shù)大的值。用sizeof()求數(shù)組元素個(gè)數(shù)時(shí),盡量在數(shù)組定義時(shí)求。因?yàn)閭鲄⒑髷?shù)組會降維成指針。

?3.2二維數(shù)組

#include

void Lisa(int arr[][4])

{

printf("a = %d\n", sizeof(arr));//數(shù)組降維成指針后的指針大小,在32位系統(tǒng)下指針都為4字節(jié)

printf("b = %d\n", sizeof(arr[0][0]));//數(shù)組首元素的大小

printf("sz =a / b = %d\n", sizeof(arr) / sizeof(arr[0][0]));//大小為1

printf("arr = %p\n", arr);//數(shù)組首元素地址

printf("arr + 1 = %p\n", arr + 1);//下一個(gè)元素的地址

printf("&arr = %p\n", &arr);//指針的地址

printf("&arr + 1 = %p\n", &arr + 1);//指針下一項(xiàng)的地址

}

int main(void)

{

int Shuzu[3][4] = { 0,1,2,3,4,5,6,7,8,9 };

printf("a = %d\n", sizeof(Shuzu));//數(shù)組總大小

printf("b = %d\n", sizeof(Shuzu[0][0]));//數(shù)組首元素大小

printf("sz =a / b = %d\n", sizeof(Shuzu) / sizeof(Shuzu[0][0]));//數(shù)組元素個(gè)數(shù)

printf("Shuzu = %p\n", Shuzu);//數(shù)組首元素地址

printf("Shuzu + 1 = %p\n", Shuzu + 1);//下一個(gè)元素的地址,這時(shí)其內(nèi)部元素的一維數(shù)組

printf("&Shuzu = %p\n", &Shuzu);//代表整個(gè)數(shù)組,但是地址仍是首元素地址

printf("&Shuzu + 1 = %p\n", &Shuzu + 1);//跳過整個(gè)數(shù)組后緊挨著的地址

//此時(shí)該地址減去首元素地址等于數(shù)組大小

printf("\n\n");

Lisa(Shuzu);

return 0;

}

?

?

形參格式,例如:int arr[][4]或者int (*arr)[4],這里為指向具有四個(gè)整型元素的一維數(shù)組的數(shù)組指針。除了第一個(gè)中括號里的數(shù)字可以省,后面的中括號的內(nèi)容不能省略,因?yàn)橄聵?biāo)是數(shù)組類型的一部分,省略掉就不明確其類型。注意: 看待所有的數(shù)組時(shí),都將它看作一維數(shù)組,只不過其內(nèi)部元素不一樣,例如:三維數(shù)組其內(nèi)部元素為二維數(shù)組,而二維數(shù)組也是有一維數(shù)組組成,都是線性連續(xù)且相等的。

4.數(shù)組指針和指針數(shù)組

數(shù)組指針:是指針,指向數(shù)組。例:int (*arr)[10]指針數(shù)組:是數(shù)組,數(shù)組內(nèi)容存放的是指針。例:int *arr[10]

然后,需要明確一個(gè)優(yōu)先級順序:()>[]>* 所以: (*p)[n]:根據(jù)優(yōu)先級,先看括號內(nèi),則p是一個(gè)指針,這個(gè)指針指向一個(gè)一維數(shù)組,數(shù)組長度為n,這是“數(shù)組的指針”,即數(shù)組指針; *p[n]:根據(jù)優(yōu)先級,先看[],則p是一個(gè)數(shù)組,再結(jié)合*,這個(gè)數(shù)組的元素是指針類型,共n個(gè)元素,這是“指針的數(shù)組”,即指針數(shù)組。

4.1指針數(shù)組

#include

int main(void)

{

int *p[4];

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

int arr2[4] = { 2,4,6,8 };

int arr3[5] = { 0 };

int arr4[2] = { 2,2 };

p[0] = arr1;

p[1] = arr2;

p[2] = arr3;

p[3] = arr4;

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

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

printf("%d\n", *(p[2] + 1));

printf("%d\n", *(p[3] + 1));

return 0;

}

首先,對于語句int*p[4],因?yàn)閇 ]的優(yōu)先級要比*要高,所以 p 先與[ ]結(jié)合,構(gòu)成一個(gè)數(shù)組的定義,數(shù)組名為 p,而int*修飾的是數(shù)組的內(nèi)容,即數(shù)組的每個(gè)元素。也就是說,該數(shù)組包含 4 個(gè)指向int類型數(shù)據(jù)的指針,如圖所示,因此,它是一個(gè)指針數(shù)組。

4.2數(shù)組指針

#include

int main(void)

{

int Shuzu[3][4] = { 0,1,2,3,4,5,6,7,8,9,0,0 };

int(*arr)[4] = Shuzu;

for (int i = 0;i < 3;i++)

{

for (int j = 0;j < 4;j++)

{

printf("arr[%d][%d]=%d ", i,j,arr[i][j] );

}

printf("\n");

}

return 0;

}

?

其次,對于語句int(*arr)[4],“( )”的優(yōu)先級比[ ]高,*號和 arr 構(gòu)成一個(gè)指針的定義,指針變量名為 arr,而 int 修飾的是數(shù)組的內(nèi)容,即數(shù)組的每個(gè)元素。也就是說,arr 是一個(gè)指針,它指向一個(gè)包含 4 個(gè)int類型數(shù)據(jù)的數(shù)組,如圖 所示。很顯然,它是一個(gè)數(shù)組指針。

?

?

柚子快報(bào)激活碼778899分享:c++ FX-數(shù)組的使用

http://yzkb.51969.com/

相關(guān)鏈接

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18824758.html

發(fā)布評論

您暫未設(shè)置收款碼

請?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄