#include
intmain()
;int int2[10]
=;double double1=
;double double2[10]
=;printf
("sizeof(str1) = %d, sizeof(str2) = %d\r\n"
,sizeof
(str1)
,sizeof
(str2));
printf
("sizeof(int1) = %d, sizeof(int2) = %d\r\n"
,sizeof
(int1)
,sizeof
(int2));
printf
("sizeof(double1) = %d, sizeof(double2) = %d\r\n"
,sizeof
(double1)
,sizeof
(double2));
getchar()
;return0;
}
執行結果:
sizeof
(str1)=6
,sizeof
(str2)=10
sizeof
(int1)=20
,sizeof
(int2)=40
sizeof
(double1)=40
,sizeof
(double2)
=80
分析:
初始化陣列時,如果陣列下標為空,系統則按照後面元素個數為參考,去分配陣列記憶體空間大小。
初始化陣列時,如果陣列下標不為空,系統則按照下標,去分配陣列記憶體空間大小。
示例:
#include
#define array_length(x) sizeof(x)/sizeof(x[0])
intmain()
;int int2[10]
=;double double1=
;double double2[10]
=;printf
("sizeof(str1) = %d, sizeof(str2) = %d\r\n"
,sizeof
(str1)
,sizeof
(str2));
printf
("sizeof(int1) = %d, sizeof(int2) = %d\r\n"
,sizeof
(int1)
,sizeof
(int2));
printf
("sizeof(double1) = %d, sizeof(double2) = %d\r\n"
,sizeof
(double1)
,sizeof
(double2));
printf
("array_length(str1) = %d, array_length(str2) = %d\r\n"
,array_length
(str1)
,array_length
(str2));
printf
("array_length(int1) = %d, array_length(int2) = %d\r\n"
,array_length
(int1)
,array_length
(int2));
printf
("array_length(double1) = %d, array_length(double2) = %d\r\n"
,array_length
(double1)
,array_length
(double2));
getchar()
;return0;
}
輸出結果:
sizeof
(str1)=6
,sizeof
(str2)=10
sizeof
(int1)=20
,sizeof
(int2)=40
sizeof
(double1)=40
,sizeof
(double2)=80
array_length
(str1)=6
,array_length
(str2)=10
array_length
(int1)=5
,array_length
(int2)=10
array_length
(double1)=5
,array_length
(double2)
=10
C語言細節
參考 注釋必須和 一起維護,不應該描述顯而易見的事,或把別的地方已說清楚的東西在說一遍。字面常量沒有語義,也沒有真正的記憶體位址。所以不可以取其位址,也不可以用於初始化普通引用,例如 long r1 40000 但是const long r1 40000 卻是合法的。所以,盡量不要使用字面常量,而應...
C語言細節
a b 先賦值再自增 a b先自增再賦值 float 6 4是1.500000 float 6 4 是1.000000 原始檔.c 目標程式.obj 執行程式.exe 都是二進位制檔案 源程式以ascii 形式存於文字檔案 c程式演算法可無輸入必須要有輸出 三種基本結構可以完成任何複雜的任務 大括號...
C語言細節
1.c誰呼叫了main函式 linux執行乙個程式就是建立乙個新程序,然後把這個程式丟到這個程序中執行直到結束。linux通過.task執行程式,新程序作為命令程序的乙個子程序執行。main函式的返回值最終會返回給父程序。父程序的引數傳遞給子程序。2.void型別的本質 void的意思是乙個變數還不...