在程式中不可變化的量,也就不可賦值
常用兩種定義方式,#define
和const
另外還有乙個字串常量
define
#define max 100
#define
在預編譯的時候,其實也是做的簡單文字替換
可以通過gcc -e test test.c
進行驗證
注:使用define定義時候叫做巨集定義,其原理類似於include,其後沒有雙引號
const
const定義乙個變數,一旦定義以後就不可以修改。故const定義的變數在一開始就要賦值,不然在使用的時候就會發生意外,取到的是原記憶體位址的值,為不確定值。
const
int a =
10;
字串常量
在c語言當中""引用的字串叫做字串常量,一旦定義亦不可以被修改的
其形式為"test"
其實質是使用null字元』\0』終止的一維陣列,在記憶體中實際占用的位址位會多一位,即為』\0』占用的位址
由於c語言中沒有專門定義字串常量的關鍵字,故一般是用char陣列定義字串。
char string[6]
=;//等價於
char string=
"test"
;
注:以上實質為陣列,可修改但實際並不是修改字串的值
字串有很多常用的函式,現簡單的列出幾個常用的字串操作函式:
函式功能
strcpy(s1, s2);
複製字串 s2 到字串 s1
strcat(s1, s2);
連線字串 s2 到字串 s1 的末尾
strlen(s1);
返回字串 s1 的長度
strcmp(s1, s2);
如果 s1 和 s2 是相同的,則返回 0;如果 s1s2 則返回大於 0
strchr(s1, ch);
返回乙個指標,指向字串 s1 中字元 ch 的第一次出現的位置
strstr(s1, s2);
返回乙個指標,指向字串 s1 中字串 s2 的第一次出現的位置
sizeof是乙個關鍵字,而不是乙個函式。
sizeof返回的是乙個大於0的整數,表示資料型別在計算機記憶體中占用的空間,單位是位元組
為了表示sizeof的返回值,使用size_t表示sizeof的返回值。即為無符號整形。一般情況下等價於就是unsigned int
sizeof
(int);
sizeof
(char
);
int變數
int是整型
int型別佔據記憶體的大小為4個位元組
16位系統下:2個位元組
32和64位系統下:4個位元組
int a;
//代表在記憶體中開闢乙個大小為4位元組的儲存空間
a =1
;//代表在開闢的空間裡儲存的資料是10這個常量
補充知識:
小端對齊和大端對齊
小端對齊:高位址放高位,底位址放低位
大端對齊:高位址放低位,底位址放高位
對於大型unix cpu都是按照大端對齊方式處理int,但對於x86構架cpu,還有arm,是小端對齊的
printf輸出int的值
int a =10;
printf
("%d"
,a);
//%d的意思是按照10進製列印乙個整數
%d:按照10進製列印乙個整數
%o:按照8進製列印乙個整數
%x與%x:按照16進製制列印乙個整數(區分大小寫列印)
short, long, long long, unsigned int
整數溢位
當把乙個大的整數賦值給小的整數,叫整數溢位
此時會導致高位被拋棄,截斷的資料賦值給小的整數
char變數
char是字元型
char佔據乙個位元組的記憶體
char -128~+127(7f)
unsigned char 0~255(ff)
char就是乙個位元組(byte)
如果將char當作乙個整數輸出的話,就是該字元的ascii碼
printf輸出char
%c 代表輸出乙個字元
常見轉義字元
轉義字元
意義\a
警報\b
退格\n
換行\r
回車\t
製表符\
斜槓\』
單引號\」
雙引號?
問號浮點數變數
浮點數所佔位元組和計算機密切相關
float:單精度浮點數
double:雙精度浮點數
long double
float表示的數,一般結尾加f或者f,以示區分(和double區分)
printf輸出浮點數
%f或者%lf
浮點數賦值給整數,小數字會捨棄。
整數賦值給浮點數,會增加小數字,全部用0填充
型別描述
char
通常是乙個位元組(八位)。這是乙個整數型別。
int對機器而言,整數的最自然的大小。
float
單精度浮點值。單精度是這樣的格式,1位符號,8位指數,23位小數。
double
雙精度浮點值。雙精度是1位符號,11位指數,52位小數。
void
表示型別的缺失。
const
int ci =
10;
volatile
int vi =
10;
register
int ri =
10;
double d =
10.5
;int a = d;
int a =5;
int b =2;
double d =
(double
)a /
(double
)b;
C 學習筆記 資料型別
c 有六種資料型別 bool char wchar t int float和double型。1.bool 布林型 bool型表示兩個邏輯值1或0,如 bool a a true true表示1,false表示0.2.char 字元型 char型變數佔乙個位元組 8位 所以乙個字元型變數可表示0 25...
C 學習筆記 資料型別
每天花點時間,重新拾起c 記錄一些學習筆記,內容根據自己理解逐步更新。1.指標 我們最熟悉的,乙個位元組由8位構成,乙個字由32位構成,這是針對32位作業系統,其實字的大小是依賴於機器的,c 基本資料型別,int short long float double long double長度都是以字為單...
C 學習筆記 資料型別
1 資料型別存在的意義 給變數分配合適的空間。2 整形變數 短整型short 2位元組 整型int 4 長整型long 4 長長整型long long 8 3 sizeof 統計資料型別所佔記憶體的大小。sizeof 資料型別 變數 例如 sizeof short 2。3 浮點型 單精度float ...