基礎C語言的基礎(19.12.1更新)

對c語言中基本數據類型及表達式的理解

  • 主函數

int main(){
//此處省略一系列代碼
return 0;
}
  1. main()函數即主函數
    【小括號括起來的是參數】【大括號括起來的是代碼塊→去完成特定功能】
  • 所有的程序的入口點都是main函數
  • int main(int argc,char * argv[]) 此為標準模板,即規(guī)定參數,main是系統(tǒng)給的
    ps int argc:參數個數 (全稱 argument count)
    ?????char * argv[]:每個參數組成的字符串組成的數軸(其中無 * 放的是字符如j,有 * 放的是字符串如jeck)
  1. 主函數結束一般都有寫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;
}
DEV C++中的輸出結果

以上可得出各變量的內存度量值

  • (格式符為真實值預留位置,并控制顯示的格式)實用及延展見下
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語言中的全局與局部變量的理解

根據變量作用域的不同可分為局部變量和全局變量

  1. 局部變量
    (在函數內部定義的變量,作用域為函數內部,該函數外無法使用)
  2. 全局變量
    (在所有函數外定義的變量,一般與頭文件在一塊兒,作用域從聲明開始直到程序結束)
    PS:
  • 同一源文件中可以有同名的局部變量與全局變量,但在局部變量的作用域里,同名的全局變量無效
  • 可以在不同的函數里使用同樣的變量名代表不同變量
  • 局部變量不能賦值為同名全局變量的值

排序

PS可以在優(yōu)酷搜索舞動的排序來方便理解

  1. 冒泡排序
    實現(xiàn)方式:每次都遍歷一個數組比較大小,找到最大的一個數沉底,如果數組有N個元素。
    第一次需要
  2. 選擇排序
    實現(xiàn)方式:外層循環(huán)控制需要遍歷多少次(n-1) 再內層循環(huán)遍歷出當前最小的數
  3. 等等

對于#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 ;
 }
  • 函數使用需要知道的幾個過程
  1. 函數聲明(函數聲明會告訴編譯器函數名稱及如何調用函數。函數的實際主體可以單獨定義。)
    △針對定義的函數 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:形式參數:這個代碼塊的局部變量

  1. 調用函數(創(chuàng)建 C 函數時,會定義函數做什么,然后通過調用函數來完成已定義的任務。)
  • 定義函數執(zhí)行的兩種方式
  1. 聲明和實現(xiàn)一起(操作如下)
int add(int a, int b){
    int sum = a + b;
    return sum;
}

int minus(int a, int b){
    return a - b;
}
  1. 先聲明 后實現(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;
}

詳情可點擊段首鏈接

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容