c語言複雜資料型別
------ ios培訓、android培訓、期待與您交流!-------
一、陣列
我們常用的陣列分為一維陣列、二維陣列和字元陣列
1. 陣列的定義
一維陣列定義方式:型別說明符 陣列名[常量表示式(即元素個數)]
二維陣列定義方式:型別說明符 陣列名[常量表示式][常量表示式]
字元陣列定義方式:char 陣列名[常量表示式]
(1)型別說明符可以是int、float、char等;
(2)陣列名的命名規則和變數名的命名規則一樣;
(3)在定義陣列時,需要指定陣列中元素的個數,方括號中的常量表示式表示元素的個數,常量表示式可以是常量或者符號常量,但不能是變數;
(4)二維陣列名後的第乙個常量表示式通常表示行下標,第二個常量表示式表示列下標;
(5)二維陣列中元素排列的順序是按行存放的,即在記憶體中先順序排放第一行的元素,在存放第二行的元素,依次排放;
(6)陣列名還可以表示陣列在記憶體中的位址;
2. 陣列的引用
c語言規定只能逐個引用陣列元素而不能一次引用整個陣列。
一維陣列的表示方式:陣列名[下標]
二維陣列的表示方式:陣列名[行下標][列下標]
字元陣列的表示方式:陣列名[下標]
3. 陣列的初始化
(1) 在定義陣列時對陣列元素賦值
int a[5]=;
int b[2][3]=,};
char c[4]=;
char d[2][10]=;
(2) 只給一部分元素賦值
int a[5]=;
int b[2][3]=,};
char c[4]=;
注:這樣方法的賦值只是給陣列的前面的資料賦值;
(3) 使陣列所有元素都為0
int a[5]=;
注:a.在對陣列元素賦值時,假如資料的個數已經確定,可以不指定陣列長度;
b.計算陣列的長度可以用: sizeof(陣列名)/sizeof(陣列型別);
c.陣列作為函式引數時,可以省略元素個數,傳遞的是整個陣列的位址,修改函式形引數組元素的值,會影響到外面的是引數組;
4.程式舉例:將乙個二維陣列a的行和列的元素互換,存到另乙個陣列b中。
#include
void main()
,};int b[3][2];,i,j;
printf(「array a:\n」);
for(i=0;i<=1;i++) ;
b[j][i]=a[i][j]; }
printf(「\n」); }
printf(「array b:\n」);
for(i=0;i<=2;i++)
} }
二、字串
1. 字串處理函式:
(1) puts函式 :puts(字元陣列) 將乙個字串輸出到終端上(以』\0』為結束標誌)
(2) gets函式 :gets(字元陣列)從終端輸入乙個字串到字元陣列
(3) strcat函式 :strcat(字元陣列1,字元陣列2)將字串2接到字串1的後面
(4) strcpy和strncpy函式:複製字串
(5) strcmp函式:strcmp(字串1,字串2) 比較字串1和字串2
(6) strlen函式:strlen(字串) 函式的值為字串的實際長度(不包括』\0』)
(7) strlwr函式:strlwr(字串) 將字串中大寫字母轉換成小寫字母
(8) strupr函式:strupr(字串)將字串中小寫字母轉換成大寫字母
三、指標
1、基本資料型別作為函式引數是程式的值傳遞;
void change(int ); void change(int)
int main() int main()
return 0;}
void change(int n) void change(int n)
第乙個程式a=90;要想在函式change內部修改a的值,就必須在函式中找到的a位址,將主函式中的change(a)改為change(&a);也可以定義乙個變數接受a的位址,定義格式:變數型別 *變數名 即定義乙個指標變數p,比如:int *p;
int a; p=&a; *p=10;,這時候就悄悄地改變了a的值。 2、
int main()
3、指向指標的指標
int main()
4、指標的疑問
int main()
cp=ap=bp=8;即任何指標都占用8個位元組的儲存空間。那麼為什麼指標要分型別?
char c=1;
char *p; //如果用int *p,不會報錯,但是取出來的值可能會出錯
p=&c;
printf(「c的值是%d\n」,*p);
因為指標所占用的空間是8個位元組,所以取出來的數也是8個位元組,所以取出以p指向的位址的連續8個位元組,與題中想要輸出來的結果不同,這就會為什麼指標要分型別。
5、指標與字串
int main()
定義字串的兩種型別:
(1) 陣列:char name=」it」;
特點:字串裡邊的字元是可以修改的;
使用場合:字元的內容需要經常修改的
(2)指標:char *name = 「it」;
特點:字串其實是乙個常量,裡面的字元是不能修改;
使用場合:字串的內容不需要修改,且這個字串經常使用
7、指向函式的指標
#include
void test()
int main()
掌握:定義指向函式的指標
double(*p) (double,char *,int);
p=haha;
或者 double (*p)(double,char *,int )=haha;
------ ios培訓、android培訓、期待與您交流!-------
程式設計基礎之 複雜資料型別
8 複雜資料型別 結構型別 在main前面 struct 結構名 宣告結構名變數 struct 結構名 結構變數1 結構變數2,結構變數n 共用體又稱聯合體,第二次賦的值會把前面的覆蓋掉,並不常用。列舉型別 標示符和標示符之間用逗號分隔。指標型別 在c語言中定義了乙個特殊的資料型別 指標型別,指標型...
C語言複雜資料型別
1 結構體 一 結構體的三種定義方式 方式一 結構體標準寫法 struct person struct person personnomal 方式二 struct person myperson 定義結構體的同時,初始化乙個person 結構體 struct person personnomal 定...
黑馬程式設計師 C 資料型別
windows phone 7手機開發 net培訓 期待與您交流!c 程式設計中,大家會經常使用到不同的資料型別,那麼 程式語言到底有什麼型別呢?具體如下 1 值型別 各種值型別總是含有相應該型別的乙個值。c 迫使你初始化變數才能使用它們進行計算 變數沒有初始化不會出問題,因為當你企圖使用它們時,編...