陣列是一系列相同型別元素有序的集合。
陣列的定義:
一般形式為:型別符 陣列名 [常量表示式]如 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];malloc函式動態分配陣列長度sizeof(a); //此時a代表的是陣列名,而不是陣列的首位址 所以大小為20,而不是4;
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語言允許用乙個變數來存放指標,這種變數稱為指標變數。指標變數可以存放基本型別資料的位址,也可以存放陣列 函式以及其他指標變數的位址。程式在執行過程中需要的是資料和指令的位址,變數名 函式名 字串名和陣列名在本質上是一樣的,它們都是位址的助記符 在編寫 的過程...