C語言基礎知識筆記
- 因為預設main為int所以可以直接:
- main(){
- …
- }
- 函式定義不可巢狀
- 運算子%%只能用於整數操作
- %%要雙標記才能列印
- 判等與賦值一定要區分
- 不可以在同一個地方,訪問和修改同一個數的數值
- 負數操作運算子“/”、“%”時,C89和C99都要確保一個神奇的公式:(a/b)*b+a%d=a
- 變數是左值
- if(表示式){語句;}
- if(表示式){語句;}else語句
- if的用法:
- if(表示式){語句;}
- else if(表示式){語句;}
- else if(表示式){語句;}
- else{語句;}
- 條件表示式:
- 表示式1?表示式2:表示式3
- 表示式1成立計算表示式2的值
- 表示式1不成立計算表示式3的值
- switch結構:
- switch(表示式){
- case 表示式1: case 2: case 3:
- 語句;break;
- case 表示式4:
- 語句;break;
- default:語句;break;
- }
- else語句屬於離他最近的且還未與其他else配對的if語句
- 迴圈中
- while用於迴圈體執行之前檢驗
- do用於迴圈執行之後檢
- for用於遞增或遞減計數變數的迴圈
- continue語句僅在迴圈可用
- while迴圈:
- while(表示式)表示式不為0即執行
- {語句;}
- 如果一來就為0,會一次都不執行直接跳出迴圈
- while(1)是一種常用的無限迴圈語句
- do迴圈:
- do{語句;}while(表示式);
- 先執行迴圈,再判定
- 至少執行一次迴圈
- for迴圈:
- for(表示式1;2;3)
- 表示式1用來賦初值(迴圈執行前)
- 表示式2用來控制迴圈終止
- 表示式3(迴圈執行後執行)
- 可以等價於
- 表示式1;
- while(表示式2){
- 語句
- 表示式3;
- }
- 必須有兩個分號,表示式1都可以挑出來表達之後省略(;2;3)
- 形式引數定義時!每個形參前必須都有其型別說明
- 函式定義:
- 返回型別 函式名(形式引數)
- {
- 宣告;
- 語句;
- }
- (花括號內的稱為函式體)
- 函式呼叫:
- 函式名(實際引數);
- 函式宣告:
- 返回型別 函式名(形式引數);
- 注意!這裡有分號!
- 原因是形式引數裡面沒有具體的變數名稱,只需要型別
- 目的是讓程式進行預備
- 如果函式在呼叫前遇到了原型,編譯器會建立一個隱式宣告(也說明函式宣告的重要性!)
- 如果函式在呼叫前沒有遇到原型,編譯器會執行預設的實際引數提升
- 無實參的函式要呼叫也必須有()
- 非void函式必須用return語句來指定返回值
- void型別函式沒有返回值
- 若省略返回型別,C89會自動變為int,C99中不合法
- 把陣列名傳遞給函式時,陣列名後不加方括號!
- 利用陣列型實際引數可以控制陣列的有效性,把無效部分在後期刪去!!!
- 宣告多維陣列的形式引數時,宣告可以省略第一維的長度(例如二維陣列,可以不說行數,但是必須制定列數)
- 變長陣列宣告時必須先長度引數,再陣列,要讓代表陣列長度的引數先被程式看見
- 也可以用*替換陣列內的長度引數,*直接代表陣列長度與形參列表中的前面的引數有關
- static可以在陣列引數宣告中使用C99
- int a【static 3】代表陣列長度至少為3
- 多維陣列的話static僅可用於第一維
- 靜態區域性變數static可以在區域性變數的值呼叫結束後,而不釋放,儲存原值。
- static int a;
- 暫存器變數(register變數)代表允許將區域性變數的值放在cpu中提高執行效率
- register int a;
- 擴充套件外部變數的作用域(extern)
- extern 外部變數名字;
- 代表作用域效果從上一行開始
- 再正式定義外部變數
- 然後以下的範圍都可使用
- 日後測試完善(少用為好)
- 加了static變為靜態外部變數後,不可用extern擴大其範圍
- 複合字面量是通過指定其包含的元素而建立的沒有名字的陣列(int 【】){…}
- 可以使用const把陣列變為只讀
- (const int【】){1,1}
- return語句:
- return 表示式;
- 在main函式中也可以用exit來等價替換,形式如下:
- 首先必須是在main函式中!
- #include<stdlib.h>
- exit(表示式);
- return 0;可以變為exit(0);
- 也可以用exit(EXIT_SUCCESS);
- exit(EXIT_FAILURE);
- continue語句
- 把迴圈轉移到迴圈體末尾之前
- 但是沒有跳出迴圈!
- continue與goto等效替換
- while (…) { while (…) {
- … …
- continue; goto end;
- … …
- } end: ;
- }
- break語句
- 可以跳出迴圈
- 一個break只能跳出最近的一層
- goto語句
- 使用模版:
- 識別符號:語句
- goto 識別符號;
- 可以任意跳躍!直接跳出多重迴圈!
- 所以優點也是缺點,很容易創造垃圾程式碼
- 空語句最好單獨放置在一行,或者用continue;語句或者還可以用{}凸顯一下
- 空迴圈一般僅只是用於增加簡潔度,而不會提高效率
- 素數判斷可以只檢查不大於n(你輸入的檢驗數)的平方根 的除數
- 十進位制不可以0開頭
- 八進位制通常以0開頭
- 十六進位制通常以0x或0X開頭
- 有符號整數型別
- short int:%hd
- int:%d
- long int:%ld(C99可以%lld)
- 浮點型別
- float:%f,常量末尾加f
- double:%lf,末尾加F
- long double:%lf,末尾加L
- 注意!只能在scanf中使用l,不能在printf函式格式串中使用
- long double中scanf和printf都放%Lf
- 字元操作
- 顯示格式:
- char sb;
- sb='a'
- sb=' '
- 字元常量使用時,轉義序列必須用一對單引號括起來:'\33'
- getchar返回的是int型的值,儘管它讀入和返回的是字元
- %s不能有空格
- 使用getchar時必須打括號!!!!!曹尼瑪!
- 型別轉換有隱式轉換和顯式轉換
- 常用的算術轉換的策略是整值提升
- 強制轉換表示式:
- (型別名)表示式
- 型別定義:
- typedef 型別 名字;
- 名字 變數,變數,變數;
- 更容易理解,更有實際意義,容易修改,直接改定義處的型別
- 型別定義比巨集定義強大,巨集定義還不能定義陣列和指標。
- sizeof表示式:
- sizeof(型別名)
- 這個運算子允許程式儲存指定型別值所需的空間的大小
- C語言有兩種聚合型別:陣列和結構
- 陣列:
- 型別 名字【大小】{個體表示,個體表示};
- 陣列可以通過在型別名前面加const變成常量陣列
- 宣告為常量陣列的陣列不會被程式修改,編譯器也能發現那些有修改他意圖的程式碼
- C99可以使用變長陣列,即使用非常量表達式
- 變長陣列的限制在於無初始化值和靜態儲存期限
- 在區域性變數宣告中放置static可以使變數具有靜態儲存期限,即擁有永久的儲存單元,即使函式返回,也不會失去他的值。
- #define N n等效於sizeof(a)/sizeof(a【0】)
- 這是為了解決可能忘記名字的問題
- 也可以二者直接組合定義
- #include<string.h>
- gets(陣列) and puts(陣列)
- strcat(字元陣列1,字元陣列2)
- 效果:把字串2接到1的後面
- 字串1一定要夠大!
- 83.rcpy(字元陣列1,字串2)
- 效果:把字串2複製到字元陣列1中
- 字串2也可以是字元陣列
- 夠大!
- strcmp(字串1,字串2)
- 從左往右比較不同元素,隨ASCII碼大的為正
- 若兩個字串相等,為0
- 小於為負
- strlen(字元陣列)
- 測量長度
- 不包含'\0'
- strlwr(字串)
- 效果:將字串轉化為小寫
- strupr(字串)
- 效果:將字串轉化為大寫
- 指標就是地址,指標變數就是儲存地址的變數
- 指標變數的宣告:
- 1.int i;
- 型別 *p,*q;
- p=&i;
- q=&j;
- &:取地址符(&x就是x在記憶體中的地址)*:間接定址符(*p就是i的別名,改變*p的值也會改變i的值)
- 對變數使用&會產生指標
- 對指標使用*會返回變數
- q=p是把p的內容(i的地址)給了q,即把q指向了p所指向的地方
- *q=*p是把p指向的值(i的值)複製給q指向的物件(j的值)
- const保護引數:說明p是指向“長整數”的指標。表明函式不會改變指標引數指向的物件。
- 陣列指標的元素可以
- *(p+i)表示陣列p的第i個元素
- p+i實質為p+i*(元素所佔位元組)還是位置
- 多維陣列中a【1】+1等價於*a(a+1)+1,都表示了a【1】【1】
- 指向函式的指標:
- int(*p)(int)
- p=f(函式入口)
- 這是一個指向整形函式,並且這個整形函式還有一個整形引數的函式
- 呼叫形式為:
- a=(*p)(n)
- (*p)(n)等效於f(n)
- 因為預設main為int所以可以直接:
- main(){
- …
- }
- 函式定義不可巢狀
- 運算子%%只能用於整數操作
- %%要雙標記才能列印
- 判等與賦值一定要區分
- 不可以在同一個地方,訪問和修改同一個數的數值
- 負數操作運算子“/”、“%”時,C89和C99都要確保一個神奇的公式:(a/b)*b+a%d=a
- 變數是左值
- if(表示式){語句;}
- if(表示式){語句;}else語句
- if的用法:
- if(表示式){語句;}
- else if(表示式){語句;}
- else if(表示式){語句;}
- else{語句;}
- 條件表示式:
- 表示式1?表示式2:表示式3
- 表示式1成立計算表示式2的值
- 表示式1不成立計算表示式3的值
- switch結構:
- switch(表示式){
- case 表示式1: case 2: case 3:
- 語句;break;
- case 表示式4:
- 語句;break;
- default:語句;break;
- }
- else語句屬於離他最近的且還未與其他else配對的if語句
- 迴圈中
- while用於迴圈體執行之前檢驗
- do用於迴圈執行之後檢
- for用於遞增或遞減計數變數的迴圈
- continue語句僅在迴圈可用
- while迴圈:
- while(表示式)表示式不為0即執行
- {語句;}
- 如果一來就為0,會一次都不執行直接跳出迴圈
- while(1)是一種常用的無限迴圈語句
- do迴圈:
- do{語句;}while(表示式);
- 先執行迴圈,再判定
- 至少執行一次迴圈
- for迴圈:
- for(表示式1;2;3)
- 表示式1用來賦初值(迴圈執行前)
- 表示式2用來控制迴圈終止
- 表示式3(迴圈執行後執行)
- 可以等價於
- 表示式1;
- while(表示式2){
- 語句
- 表示式3;
- }
- 必須有兩個分號,表示式1都可以挑出來表達之後省略(;2;3)
- 形式引數定義時!每個形參前必須都有其型別說明
- 函式定義:
- 返回型別 函式名(形式引數)
- {
- 宣告;
- 語句;
- }
- (花括號內的稱為函式體)
- 函式呼叫:
- 函式名(實際引數);
- 函式宣告:
- 返回型別 函式名(形式引數);
- 注意!這裡有分號!
- 原因是形式引數裡面沒有具體的變數名稱,只需要型別
- 目的是讓程式進行預備
- 如果函式在呼叫前遇到了原型,編譯器會建立一個隱式宣告(也說明函式宣告的重要性!)
- 如果函式在呼叫前沒有遇到原型,編譯器會執行預設的實際引數提升
- 無實參的函式要呼叫也必須有()
- 非void函式必須用return語句來指定返回值
- void型別函式沒有返回值
- 若省略返回型別,C89會自動變為int,C99中不合法
- 把陣列名傳遞給函式時,陣列名後不加方括號!
- 利用陣列型實際引數可以控制陣列的有效性,把無效部分在後期刪去!!!
- 宣告多維陣列的形式引數時,宣告可以省略第一維的長度(例如二維陣列,可以不說行數,但是必須制定列數)
- 變長陣列宣告時必須先長度引數,再陣列,要讓代表陣列長度的引數先被程式看見
- 也可以用*替換陣列內的長度引數,*直接代表陣列長度與形參列表中的前面的引數有關
- static可以在陣列引數宣告中使用C99
- int a【static 3】代表陣列長度至少為3
- 多維陣列的話static僅可用於第一維
- 靜態區域性變數static可以在區域性變數的值呼叫結束後,而不釋放,儲存原值。
- static int a;
- 暫存器變數(register變數)代表允許將區域性變數的值放在cpu中提高執行效率
- register int a;
- 擴充套件外部變數的作用域(extern)
- extern 外部變數名字;
- 代表作用域效果從上一行開始
- 再正式定義外部變數
- 然後以下的範圍都可使用
- 日後測試完善(少用為好)
- 加了static變為靜態外部變數後,不可用extern擴大其範圍
- 複合字面量是通過指定其包含的元素而建立的沒有名字的陣列(int 【】){…}
- 可以使用const把陣列變為只讀
- (const int【】){1,1}
- return語句:
- return 表示式;
- 在main函式中也可以用exit來等價替換,形式如下:
- 首先必須是在main函式中!
- #include<stdlib.h>
- exit(表示式);
- return 0;可以變為exit(0);
- 也可以用exit(EXIT_SUCCESS);
- exit(EXIT_FAILURE);
- continue語句
- 把迴圈轉移到迴圈體末尾之前
- 但是沒有跳出迴圈!
- continue與goto等效替換
- while (…) { while (…) {
- … …
- continue; goto end;
- … …
- } end: ;
- }
- break語句
- 可以跳出迴圈
- 一個break只能跳出最近的一層
- goto語句
- 使用模版:
- 識別符號:語句
- goto 識別符號;
- 可以任意跳躍!直接跳出多重迴圈!
- 所以優點也是缺點,很容易創造垃圾程式碼
- 空語句最好單獨放置在一行,或者用continue;語句或者還可以用{}凸顯一下
- 空迴圈一般僅只是用於增加簡潔度,而不會提高效率
- 素數判斷可以只檢查不大於n(你輸入的檢驗數)的平方根 的除數
- 十進位制不可以0開頭
- 八進位制通常以0開頭
- 十六進位制通常以0x或0X開頭
- 有符號整數型別
- short int:%hd
- int:%d
- long int:%ld(C99可以%lld)
- 浮點型別
- float:%f,常量末尾加f
- double:%lf,末尾加F
- long double:%lf,末尾加L
- 注意!只能在scanf中使用l,不能在printf函式格式串中使用
- long double中scanf和printf都放%Lf
- 字元操作
- 顯示格式:
- char sb;
- sb='a'
- sb=' '
- 字元常量使用時,轉義序列必須用一對單引號括起來:'\33'
- getchar返回的是int型的值,儘管它讀入和返回的是字元
- %s不能有空格
- 使用getchar時必須打括號!!!!!曹尼瑪!
- 型別轉換有隱式轉換和顯式轉換
- 常用的算術轉換的策略是整值提升
- 強制轉換表示式:
- (型別名)表示式
- 型別定義:
- typedef 型別 名字;
- 名字 變數,變數,變數;
- 更容易理解,更有實際意義,容易修改,直接改定義處的型別
- 型別定義比巨集定義強大,巨集定義還不能定義陣列和指標。
- sizeof表示式:
- sizeof(型別名)
- 這個運算子允許程式儲存指定型別值所需的空間的大小
- C語言有兩種聚合型別:陣列和結構
- 陣列:
- 型別 名字【大小】{個體表示,個體表示};
- 陣列可以通過在型別名前面加const變成常量陣列
- 宣告為常量陣列的陣列不會被程式修改,編譯器也能發現那些有修改他意圖的程式碼
- C99可以使用變長陣列,即使用非常量表達式
- 變長陣列的限制在於無初始化值和靜態儲存期限
- 在區域性變數宣告中放置static可以使變數具有靜態儲存期限,即擁有永久的儲存單元,即使函式返回,也不會失去他的值。
- #define N n等效於sizeof(a)/sizeof(a【0】)
- 這是為了解決可能忘記名字的問題
- 也可以二者直接組合定義
- #include<string.h>
-
相關推薦
C語言基礎知識筆記:day4字串與字元陣列
注:本筆記為直接上傳,因各個markdown筆記語法的差異性,在顯示上略有區別。 如需原版請聯絡:[email protected]。(郵件主題為:學習筆記,正文需要的筆記名,可以直接複製該筆記的網址)。同時歡迎各位一起學習交流。 day4字串與字元陣
C語言基礎知識筆記:day5記憶體管理
day10 記憶體管理 @toc 一、變數作用域 全域性變數和區域性變數 一個C語言變數的作用域可以是程式碼塊,作用域就是函式作用域或者檔案作用域 程式碼塊:{}之間的一段程式碼; 1.檔案作用域: 如果一個變數在其他的程式碼檔案中已經定義了,可以在本程式中使用
C語言基礎知識筆記
C語言筆記 因為預設main為int所以可以直接: main(){ … } 函式定義不可巢狀 運算子%%只能用於整數操作 %%要雙標記才能列印 判等與賦值一定要區分 不可以在同一個地方,訪問和修改同一個數的數值 負
C語言基礎知識整理
除法 當前 www 做到 初步 編寫 main函數 配對 十進制數 用一個簡單的c程序例子,介紹C語言基礎知識的基本構成、格式、以及良好的書寫風格,使小夥伴對c語言有個初步認識。 例1:計算兩個整數之和的c程序: #includemain(){int a,b,sum;
C語言基礎知識
sig 指向 開始 extern strong font 寬度 main bsp printf函數向終端輸出若幹個任意類型的數據。 表示輸出類型的格式字符 格式字符意義 a 浮點數、十六進制數字和p-計數法(C99) A
程序設計入門-C語言基礎知識-翁愷-期中測試
第一條 情況下 不出 等價 循環結構 true 語句 tdi ive 一、試題 程序設計入門—C 語言期中測評1 在代碼:while ( !e )中,!e 等價於:A.e ==0 B. e != 1 C. e!=0 D. e == 12. 以下代碼片段的輸出是:int j=
C語言基礎複習筆記(一)指標
最近linux很火,年前對linux再詳細瞭解了個大概,結合在windows平臺活躍與強大無比的C++,最終得出一個結論:C語言依然強大。 過年回來,便對的C語言充滿了興趣,於是乎去網上下載了教程回來,細細研讀,基礎程式設計思想始終是很重要的。 首先,入手的便是C語言的核心精華部分,指標。要
C語言基礎知識(一)結構體struct 和typedef struct區別
C與C++中struct 和typedef struct區別從三個方面對比 1、宣告變數方便: 在C語言中,常常見到typedef修飾結構體,如: #include<stdio.h> typedef struct _TEST { int value; char mat
C語言基礎知識(期末嘍)
演算法結構:一、順序結構、選擇結構、迴圈結構;二、迴圈結構又分為while型、until型、for迴圈結構;程式流程圖; 結構化程式設計方法:(1)自頂向下;(2)逐步細化;(3)模組化設計;(4)結構化編碼。 資料型別: 常量:常量包括字面常量、直接常量和符號常量; 變數:C語言規定標誌符只能由字母
C語言基礎知識——malloc
1、 malloc : 在堆上分配空間 void *mall (size_t size); 引數:要分配的空間大小,單位是位元組 返回值: 如果分配成功指向分配的空間 如果分配失敗,返回NULL free :釋放堆上的空間 void free(void *ptr); 引數:指向要釋放的空
C語言基礎知識——define、static、const
**1、**使用巨集函式的程式舉例: #include <stdio.h> #define PI 3.14 #define ADD(x, y) (x+y) #define MAX(x, y) ((x>y)?(x):(y)) int add(int x, int y)
C語言基礎知識——結構體
1、C語言中提供了一些由系統已經定義好的資料型別,如:int,float,char等,使用者可以在程式中用它們定義變數,解決一般的問題,但人們要處理的問題往往比較複雜,只有系統提供的型別還不能滿足應用的要求,C語言允許使用者根據需要自己建立一些資料型別,用它來定義變數。 2、C語言允許使
C語言基礎知識——函式2
1、通過return語句將函式值帶回到主調函式。 注:通常希望通過函式呼叫使主函式得到一個確定的值,這就是函式值(函式的返回值)。 如果函式不需要返回值,則不需要return語句。這時函式的型別應定義為void型別。 注:實參和形參在記憶體中佔不同夫人儲存單元,實參無法得到形參的值。 在定義
【修煉C++】基礎知識筆記-第7章 類
1 this 任何對類成員的直接訪問都被看成this的隱式引用,this是一個常量指標 (class *const),不允許改變this中儲存的地址。 常量成員函式:在引數列表後面加一個const,表示this是一個指向常量的指標(const class *const thi
C語言基礎知識 ---------- 指標(pointer)、結構(structure)
指標(pointer) 指標變數是一種特殊的變數,此變數儲存的內容不是普通值(int double char......)而是其它變數的地址(address)。 指標宣告:資料形態 *變數名 ----> int
C語言基礎知識:#if 0 或 #if 1(C語言註釋)
C語言註釋有三種方法 常見的方法有:1)單行註釋: // 2)多行註釋: /* */ 今天我想和初學者來聊聊一種相對不那麼熟悉的C語言註釋方法:利用條件編譯註釋程式碼。 3)#if 0 或 #if 1註釋: 當
C語言基礎學習筆記day3
date:‘2018-9-9’ nandian:迴圈的巢狀 day5 @toc 一、一維陣列 1.定義陣列 #include<stdio.h> int main() { int array[10]; //定義了一個數組,陣列名為array,
C語言基礎學習筆記:day5 指標
注:本筆記為直接上傳,因各個markdown筆記語法的差異性,在顯示上略有區別。 如需原版請聯絡:[email protected]。(郵件主題為:學習筆記,正文需要的筆記名,可以直接複製該筆記的網址)。同時歡迎各位一起學習交流。 day5指標 文章目錄
C語言基礎學習筆記day1
注:本筆記為直接上傳,因各個markdown筆記語法的差異性,在顯示上略有區別。 如需原版請聯絡:[email protected]。(郵件主題為:學習筆記,正文需要的筆記名,可以直接複製該筆記的網址)。同時歡迎各位一起學習交流。 基本入門知識 1.第一個c程式 #
#C語言基礎知識歸納和例題分析(1)
## C語言基礎知識歸納和例題分析(1) 計算機程式和計算機語言 1.程式 就是一組計算機能識別和執行的指令 2.計算機語言經歷的幾個階段 機器語言(直接執行)→符號語言(又稱組合語言)→高階語言 3.高階語