小白對c語言陣列的基礎總結

2022-07-18 04:33:09 字數 2642 閱讀 5046

陣列是一系列相同型別元素有序的集合。

陣列的定義:

一般形式為:型別符 陣列名 [常量表示式]如 int a[5];

表示陣列有五個元素,a[0]-a[5],不存在元素a[5]。

*注意:  1.常量表示式中可以包含常量和符號常量,如「int a[3+5];"

2.c語言不允許對陣列的大小作動態定義。

//列如,下列對陣列的定義是不合法的:

intn;

scanf("%d",&n);

int a[n];

//這段**在visual c++中編譯會報錯,但在dev c++ 和 gcc中不會,能夠正常執行!

//但是在被呼叫的函式中定義的陣列,其長度可以是變數或非變數表示式 如:

viod fun(int n)

陣列的初始化:

通過查閱書籍,搜尋資料,收集到如下初始化方式:

int a[5]=;   

// a[0]=0, a[1]=1, a[2]=2, a[3]=3, a[4]=4

char ch

int a[5]=;  //只對一部分元素賦值

// a[0]=0, a[1]=1, a[2]=0 a[3]=0 a[4]=0

int a[5]=;    //全部元素賦值為0;

// a[0]=0, a[1]=0 a[2]=0 a[3]=0 a[4]=0

int a=  //知道元素個數,不指定陣列長度

// a[0]=0, a[1]=1, a[2]=2, a[3]=3, a[4]=4

char ch[5]=;

char ch[5]="hello";

char ch[10]=;

//這裡不要忘記為最後的,'\0'分配空間。如果要初始化乙個字串"hello",那為它定義的陣列至少有6個陣列元素,但是如果忘記了,一些編譯器會自動補充

int a[5];

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

//使用for迴圈賦值

//使用memset給陣列賦指定的ascll值

char a[10];

memset(a,0,strlen(a)); //全部賦值為0

用法:void *memset(void *s, int ch, int size_t n)

陣列的大小和長度:

sizeof(資料型別)*元素個數

sizeof(陣列名)

int a[5];

sizeof(a); //此時a代表的是陣列名,而不是陣列的首位址 所以大小為20,而不是4;

malloc函式動態分配陣列長度

intmain()

len=5時,便使用malloc函式分配20個位元組,並強制轉換成int型別的位址,malloc函式只返回第乙個位元組位址,通過+1操作獲取後面的位址。

使用free(parr)釋放記憶體。

1.a與&a

雖然a=&a,在值上看起來相等,也都表示陣列的首位址,我們通過+1操作來了解它們的區別。

int a[10]=;

printf(

"a[0]_size=%d\n

",sizeof(a[0])); //

陣列元素的大小

printf("

a_size=%d\n

",sizeof(a));    //

陣列的大小

2.a[0]與&a[0]

a[0]:陣列中的元素,值為0,a[0]+1=1。

陣列的使用方式

1.陣列形式

2.指標形式

int a[5];

a[0]=0;  //陣列形式

*(a+1)=1; //指標形式

修改陣列內容的彙編過程:

1.通過陣列名找到首位址;

2.根據位址的偏移量,找到需要修改元素的位址

3.修改內容

希望大家多多提點一下。

小白對c語言指標的基礎總結

指標 指標是指向一片記憶體空間的位址,指標變數是變數,是存放一片記憶體空間首位址的變數,我們一般所說的指標都是指標變數。指標的定義及賦值 型別說明 變數名 列如 int p 區別 int p null 與 p null int p null 定義指標變數p,並且同時將p的值設定為0x00000000...

小白學C語言基礎2

語句 1.順序執行語句 2.分支選擇語句 條件成立則執行 if 二者執行其一 if else 多種情況 if else if else if 多種情況擇其一 if else if else if else if注意事項 i 如果分支語句只有一條語句時 可以省略 但是不建議省略 ii if condi...

對C語言指標的總結

指標 pointer 就是記憶體的位址,c語言允許用乙個變數來存放指標,這種變數稱為指標變數。指標變數可以存放基本型別資料的位址,也可以存放陣列 函式以及其他指標變數的位址。程式在執行過程中需要的是資料和指令的位址,變數名 函式名 字串名和陣列名在本質上是一樣的,它們都是位址的助記符 在編寫 的過程...