對c語言中基本數據類型及表達式的理解
-
主函數
int main(){
//此處省略一系列代碼
return 0;
}
- main()函數即主函數
【小括號括起來的是參數】【大括號括起來的是代碼塊→去完成特定功能】
- 所有的程序的入口點都是main函數
- int main(int argc,char * argv[]) 此為標準模板,即規(guī)定參數,main是系統(tǒng)給的
ps int argc:參數個數 (全稱 argument count)
?????char * argv[]:每個參數組成的字符串組成的數軸(其中無 * 放的是字符如j,有 * 放的是字符串如jeck)
- 主函數結束一般都有寫return 0,
此即int返回值 記錄當前程序的運行狀態(tài)——
0:正常結束→資源自有分配 非零:1 異常結束→沒收
-
printf與scanf以及系列變量
int main(int argc,char*argv[])
{
printf ("%d\n",argc);
printf ("%s\n",argv[0]);
printf("hello\nworld\n");
return 0;
}
以上輸出結果為??1
???????????????????????????此項目存儲所在位置
(argc,argv[0]代表意義見上)printf 輸出語句:輸出字符串-特征符號為"" |相連于終端口 console
scanf 輸入:終端輸入-即用戶用設備點按鍵 |相連于終端口 console
變量用來記錄數據( 以下基本數據類型→只能存一個值 )
注意:\n 表示換行
???????????\t 表示一個縮進
- scanf格式化輸入
若緩沖區(qū):123 456
int a;拿走123
char b=' ';拿走空格
int c=;拿走456
則終端:123 456
int main(){
int pwd=0;
scanf("jack%d",&pwd);
printf("pwd=%d\n",pwd);
int num1,num2;
scanf("%d %d",&num1,&num2);
printf("%d %d\n",num1,num2);
return 0;
}

scanf引號內即"用戶輸入的格式",所以輸入jack123,才能輸出顯示123,因此最好不要在scanf里面隨便寫內容
若不按格式來則輸出為0
下面的方式scanf("%d%d",&num1,&num2); 這樣用戶要一個一個敲,比較麻煩
且當兩個放一起而上方不按格式輸入時,輸入的數字會被沿用到下方的輸入格式

int 整型數據 用于整數如1 2 3 4 5 6 2342 格式符%d
long 長整型 用于數值大的整數 格式符%ld
floot 單精度浮點數 用于小數如1.5 94.3 82.6 格式符%f
double 雙精度浮點數 用于小數如1.4 格式符%f
char 字符 用于單個字符如'd' 'a' 格式符%c
string 字符串 用于多個字符如"jack" "rose" 格式符%s
short 短整型 用于整數 格式符%d
bool 布爾型 用于判斷如是,成立true;不是,不成立 false 格式符%d
pps//二級緩存可了解一下不同變量占據的內容空間不一樣
[sizeof() 是一種內存容量度量函數,則可以此驗證]
int main(){
printf("%d\n",sizeof(int));
printf("%d\n",sizeof(long));
printf("%d\n",sizeof(short));
printf("%d\n",sizeof(double));
printf("%d\n",sizeof(char));
printf("%d\n",sizeof(bool));
printf("%d\n",sizeof(float));
return 0;
}

以上可得出各變量的內存度量值
-
(格式符為真實值預留位置,并控制顯示的格式)實用及延展見下
int main(){
int count =0;
count = 3;
printf("%02d\n",count);
printf("%d\n",count);
long size=230;
printf("%ld\n",size);
system ("pause");
return 0;
}

%d 為整數型預留位置 %ld為大數值整數型預留位置
衍生%02d 及整數列數不足兩位時自動用0補齊
int main(){
float score = 3.141592;
printf("%f\n",score);
printf("%.2f\n",score);
return 0;
}

衍生%.2f表示保留小數點后兩位;可類推%.3f表示保留小數點后三位等等
int main(){
char choose='y';
printf("%c\n",choose);
printf("%d\n",choose);
bool status=false;
printf("%d\n",status);
return 0;
}

當%d保留位置后輸入的為字符時,其輸出為字符對應ASCII碼值
當將代碼中的y換為一個中文字時,執(zhí)行出錯,因為一個中文占兩個字符
%d也為布爾型預留位置,非零即真(true)1,換成3時顯示1,零即假(false)0,
-
運算符
| 符號 | 代表意義 | 符號 | 代表意義 |
|---|---|---|---|
| + | 加或正號 | - | 減或負號 |
| * | 乘法 | != | 不等于 |
| / | 除法取整數部分 | % | 除法取余數部分 |
ps:x=x%5 可表示0-4這一范圍,因為% 是整除取余數,x%5得 0-4
| 符號 | 代表意義 | 符號 | 代表意義 |
|---|---|---|---|
| && | 且(兩個同時成立) | 雙豎線 | 或(只要一個成立即可) |
| ++ | 自增 | -- | 自減 |
| == | 等于(用于判斷) | = | 賦值 |
ps:+=即a=a+一個數的簡寫 ;-=同理; !=不等于
對c語言中的全局與局部變量的理解
根據變量作用域的不同可分為局部變量和全局變量
- 局部變量
(在函數內部定義的變量,作用域為函數內部,該函數外無法使用) - 全局變量
(在所有函數外定義的變量,一般與頭文件在一塊兒,作用域從聲明開始直到程序結束)
PS:
- 同一源文件中可以有同名的局部變量與全局變量,但在局部變量的作用域里,同名的全局變量無效
- 可以在不同的函數里使用同樣的變量名代表不同變量
- 局部變量不能賦值為同名全局變量的值
排序
PS可以在優(yōu)酷搜索舞動的排序來方便理解
- 冒泡排序
實現(xiàn)方式:每次都遍歷一個數組比較大小,找到最大的一個數沉底,如果數組有N個元素。
第一次需要 - 選擇排序
實現(xiàn)方式:外層循環(huán)控制需要遍歷多少次(n-1) 再內層循環(huán)遍歷出當前最小的數 - 等等
對于#define的理解
- define用于定義常量時即為數值定義別名 ,也可以為類型定義別名
- define的好處:1 加強了代碼的可讀性,2 增強可操作性便于代碼修改。(當多處使用#define定義的別名時,別名對應的值需要修改時,可以直接在#define處快速修改)
- 下面是使用 #define 預處理器定義常量的形式:
#define example -1
擴展了解可看const
函數的使用
-
函數由一個函數頭和一個函數主體組成,俗語說就是代碼塊 { } == 的獨立空間
[每個 C 程序都至少有一個函數,即主函數 main() ]
函數可以用來區(qū)分代碼塊,即封裝代碼塊,好處是運用靈活
-
使用函數需要了解的幾個組成部分:
1.返回類型:一個函數可以返回一個值。return_type 是函數返回的值的數據類型。有些函數執(zhí)行所需的操作而不返回值,在這種情況下,return_type 是關鍵字 void。
2.函數名稱:這是函數的實際名稱。函數名和參數列表一起構成了函數簽名。
3.參數:參數就像是占位符。當函數被調用時,您向參數傳遞一個值,這個值被稱為實際參數。參數列表包括函數參數的類型、順序、數量。參數是可選的,也就是說,函數可能不包含參數。
4.函數主體:函數主體包含一組定義函數執(zhí)行任務的語句。
-
一個功能對應一個函數(如下命名)
1.init
2.isExists;
3.bubleSort;
4.play
5.userInput
6.返回 ↓
函數名(type param1,type param2){
代碼塊
return ;
}
-
函數使用需要知道的幾個過程
- 函數聲明(函數聲明會告訴編譯器函數名稱及如何調用函數。函數的實際主體可以單獨定義。)
△針對定義的函數 max(),作函數聲明為:
int max(int num1, int num2);
?△在函數聲明中,參數的名稱并不重要,只有參數的類型是必需的,因此下面也是有效的聲明:
int max(int, int);
ps:參數類型諸如 void int float char
pps:有駝峰命名法 add download parse
scaleImageToSize
int add(int a, int b){
}
ppps:形式參數:這個代碼塊的局部變量
- 調用函數(創(chuàng)建 C 函數時,會定義函數做什么,然后通過調用函數來完成已定義的任務。)
-
定義函數執(zhí)行的兩種方式
- 聲明和實現(xiàn)一起(操作如下)
int add(int a, int b){
int sum = a + b;
return sum;
}
int minus(int a, int b){
return a - b;
}
- 先聲明 后實現(xiàn)(操作如下)
int minus(int a, int b);
int add(int a, int b);
void test(void);
int main(int argc, const char * argv[]) {
//函數的使用
//通過調用函數的函數名();
add(1, 2);
int result = add(3, 3);
return 0;
}
詳情可點擊段首鏈接