關(guān)鍵字
- C語(yǔ)言提供的有特殊含義的符號(hào) 也叫做"保留字" 一共32個(gè)
- 作用:表示或?qū)崿F(xiàn)一些功能
- 注意:
全部是小寫
標(biāo)識(shí)符
- 在程序中自定義的一些符號(hào)和名稱
- 作用:給函數(shù)、數(shù)據(jù)取名 方便區(qū)分
- 范圍:26個(gè)字母、0-9、下劃線“_”組成
- 注意:
1.不能以數(shù)字開頭 2.不能與關(guān)鍵字重名 3.嚴(yán)格區(qū)分大小寫 - 命名方式:駝峰命名法
數(shù)據(jù)
數(shù)據(jù)就是數(shù)值
用途:對(duì)數(shù)據(jù)進(jìn)行操作使用時(shí)
1.靜態(tài)數(shù)據(jù) :斷電還在
-
2.動(dòng)態(tài)數(shù)據(jù) :加載到內(nèi)存中的,斷電就沒(méi)了
1byte=8bit 1KB=1024byte 1MB=1024KB 1GB=1024MB
常量
數(shù)據(jù)類型:
- 基本類型: 整型、浮點(diǎn)型、字符類型
- 構(gòu)造類型: 數(shù)組、結(jié)構(gòu)體、共用體
- 指針類型
- 空類型
float:單精度浮點(diǎn)型,精確度到小數(shù)點(diǎn)后7位
double:雙精度浮點(diǎn)型,小數(shù)點(diǎn)后15位
printf用法
%d 整型
%c 字符型
%f 浮點(diǎn)型
%p 地址
&lu 配合sizeof使用 查看變量在內(nèi)存中所占用的字節(jié)
printf("輸出整型數(shù)據(jù)%d",int);
printf("輸出浮點(diǎn)型數(shù)據(jù)%f",double);
printf("輸出字符型數(shù)據(jù)%c",'c');
printf("輸出變量在內(nèi)存中的地址%p",&int);
printf("查看變量在內(nèi)存中占用的字節(jié)數(shù)%lu",sizeof(int));
變量的作用域
- 變量的作用域只在對(duì)應(yīng)的代碼塊中(相鄰的兩個(gè)大括號(hào))
- 不同函數(shù)屬于平行作用域
- 同一個(gè)作用域中不能出現(xiàn)同名的變量
- 不同作用域下變量名可以相同
- 變量只在自己的作用域內(nèi)有效,出了作用域變量占用的內(nèi)存被釋放掉了
- 作用域可以無(wú)限嵌套
子作用域可以使用父作用域中的變量.父作用域無(wú)法使用子作用域中的變量.
int main(){
{
int a = 33;
printf("%d\n",a); // 這里a = 33
}
int a;
int b;
a = b = 33;
{
int a = 88;
a++;
printf("a = %d\n",a); //這里a = 89
{
a++;
printf("%d\n",a); //a = 90 這個(gè)作用域沒(méi)有定義變量a 自動(dòng)去上級(jí)作用域?qū)ふ易兞縜 并執(zhí)行a++
}
}
b++;
printf("a=%d,b=%d\n",a,b);//a = 33 , b = 34 上一個(gè)作用域中的a 使用完就被釋放掉了 所以這里的a還是main函數(shù)中的 33 .
}
變量的內(nèi)存分析
- 內(nèi)存占用的基本單位:byte(字節(jié)) 1byte = 8 bit
- 輸出內(nèi)存占用:
printf("int類型在內(nèi)存中占用的字節(jié)數(shù)為:%lu",sizeof(int));
- 輸出內(nèi)存地址:
int num;
printf("num在內(nèi)存中的地址:%p",&num);
- 從編號(hào)較大的內(nèi)存區(qū)域向編號(hào)較小的內(nèi)存區(qū)域分配
- 變量的地址是被分配的內(nèi)存塊中所有區(qū)域的最小值
scanf函數(shù)用法
- 在<stdio.h>庫(kù)中
- 把用戶按指定格式從鍵盤上輸入的數(shù)據(jù)賦值給指定的變量
scanf("%d",&i);
- 需要賦值的變量前面加取址符
& - 兩個(gè)
%之間的內(nèi)容要按原樣輸入 - 不能用\n換行
- printf函數(shù)的參數(shù)是變量名,scanf函數(shù)的參數(shù)是變量的地址
算數(shù)運(yùn)算符
-
+,-,*,/,% - 用于數(shù)據(jù)的運(yùn)算
- 精度 double > float > int
- 取余運(yùn)算符
%只能用于整數(shù) - 運(yùn)算時(shí)兩個(gè)數(shù)據(jù)精度不一樣,低精度數(shù)據(jù)會(huì)自動(dòng)轉(zhuǎn)換為高精度
- 同精度運(yùn)算只能得到同精度的結(jié)果,需要提高精度需要強(qiáng)制類型轉(zhuǎn)換
double d = 2/3;//賦值后d為0
解決辦法:
double d = (double)2/3;//d = 0.666
double d = 2.0/3;//d = 0.666
賦值及自增自減運(yùn)算
-
=賦值運(yùn)算符 -
++--自增自減運(yùn)算
a++;//a = a + 1
a--;//a = a - 1
-
+=-=加減等于運(yùn)算符
a += 1;// a = a + 1
a -= 1;// a = a - 1
- ++a a++的區(qū)別
a++;//a先參與運(yùn)算 再自增
++a;//a先自增 然后把結(jié)果參與運(yùn)算
sizeof用法
- 單目操作符
- 以字節(jié)形式給出其操作數(shù)或數(shù)據(jù)類型的存儲(chǔ)大小
- 打印數(shù)據(jù)類型的字節(jié)時(shí)需要加( ),打印常量或變量的時(shí)候可以不用
printf("%lu\n",sizeof (int));//4
b = sizeof 'a';