日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言学习笔记1——C语言程序

發布時間:2023/12/20 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言学习笔记1——C语言程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C語言簡介:
BCPL ->newB ->C ->UNIX ->Minux ->Linux ->gcc

C語言誕生于1970-1973年,在肯·湯姆遜和丹尼斯·里奇的合作編寫下完成,歸屬于美國貝爾實驗室。 C語言是專門為了編寫操作系統而誕生的語言,C語言天生適合對硬件編程,以速度快而著稱,也非常適合編寫數據結構與算法。 C語言由于出現時間過早,有很多缺陷,也沒想到普通人也能使用C語言編程,因此存在著陷阱,但是前輩們總結了一些避免的經驗《C陷阱和缺陷》 《C語言三劍客》 《C程序設計語言》 C語言的語法很自由,自由源于自律C89語法標準,也是gcc編譯器默認的語法標準 C99語法標準,是對C語言的擴展和增強 -std=gnu99 C11語法標準,全新的升級

一、第一個C語言程序:
#include <stdio.h>
程序員所編寫的代碼不是標準C代碼,需要一段程序把它翻譯成標準C代碼,負責翻譯的程序叫做預處理器,翻譯的過程叫做預處理,被翻譯的語句叫做預處理指令,以#開頭的語句都是預處理指令
#include 的功能是把一個頭文件導入到當前文件中
#include <> 從系統指定的路徑下查找頭文件,找到加載導入
#include “” 先從當前目錄查找頭文件,如果沒找到,再從系統指定的路徑下查找頭文件,找到加載導入
stdio.h
頭文件:以.h
結尾的文件,里面儲存的是一些輔助性的代碼,絕大多數內容都是對函數的聲明
源文件:以.c結尾的文件,里面主要是對和函數的實現,功能性的代碼
由C語言標準委員會為C語言提供的一套常用的基礎功能,以函數形式存在,這些函數都被封裝在libc.so庫中
會有很多的頭文件負責對libc.so庫中的代碼進行聲明,stdio.h是其中一個,其他string.h stdlib.h 等
stdio standard input & output 負責對輸入輸出功能函數進行聲明

int main() {printf("Hello World!\n");return 0; }main函數:C語言以函數為最小單位來管理代碼,一個函數就是一段具有某一項功能的代碼段main函數是程序的執行入口,有且只有一個int是一種數據類型,表示main函數的執行結果是一個整數return有兩個功能:1、結束函數的執行2、返回一個數據給函數的調用者main函數是由操作系統調用的,所以main函數的執行結果返回給操作系統,該執行結果反映了程序是如何結束的:整數 出現異常 (別人的錯誤)0 一切正常負數 出現錯誤 (自己的錯誤)可以通過echo $? 查看操作系統獲取到的執行結果printf/scanf是標準庫中的輸出/輸入函數,負責輸出、輸入數據,一般作為程序測試使用轉義字符:鍵盤上一些無法直接打印的符號,會用一些特殊的字符來表示,這種特殊字符就叫做轉義字符,\n就是其中之一\n 換行\t 制表符Tab\b 退格鍵,退一個字符\a 鈴響\r 回到行首\\ 顯示一個\%% 顯示一個%C語言是以分號作為一行代碼的結束,使用大括號作為劃分代碼區域注意:分號不能亂加,也不要出現中文格式的符號

二、編譯器
負責把人能看得懂的用代碼記錄的文本文件,翻譯成計算機能看懂的二進制文件,由預處理器、編譯器、鏈接器
gcc是由gnu社區為了編譯Linux內核代碼而開發的一款免費的編譯器,默認采用C89編譯語法,-std=gnu99 可以設置為C99語法
gcc code.c -> a.out(可執行文件、二進制文件)
常用的參數:
-E 顯示出預處理結果
-S 生成匯編代碼
-c 只編譯不鏈接
-o 設置編譯結果的名字
-std= 設置編譯語法
-I 指定頭文件的加載路徑
-l 指定要使用的庫文件 例如-lm
-Wall 更嚴格地檢查代碼,盡可能多得產生警告
-Werror 把警告當錯誤處理

三、C代碼源文件變成可執行文件的過程
1、預處理:把源文件翻譯成預處理文件
gcc -E code.c 把預處理結果打印到終端
gcc -E code.c -0 code.i 生成以.i結尾的預處理文件
2、編譯:把預處理文件翻譯成匯編代碼
gcc -E code.i 生成以.s結尾的匯編文件
3、匯編:把匯編文件翻譯成二進制的目標文件
gcc -c code.s 生成以.o結尾的目標文件
4、鏈接:把若干個目標文件合并生成一個可執行文件
gcc a.o b.o c.o 默認生成a.out可執行文件
gcc a.o b.o c.o -o xxx 指定生成名為xxx的可執行文件

四、C文件類型
.h 頭文件
.h.gch 頭文件的編譯結果,會被優先使用
.c 源文件
.i 預處理文件
.s 匯編文件
.o 目標文件
.so 共享庫文件
.a 靜態庫文件

五、存儲空間的單位:
Bit 比特 一個二進制位,只能存儲0或者1,計算機存儲數據的最小單位
Byte 字節 八個二進制位,計算機存儲數據的基本單位
Kb 1024字節
Mb 1024Kb
Gb 1024Mb
Tb 1024Gb
Pb 1024Tb

六、數據類型
為什么要對數據進行分類?
1、現實社會中的數據自帶類別屬性
2、對數據進行分類可以節約存儲空間、提高運行效率
C語言中數據分為兩個大類:自建(程序員自己設計的:結構、聯合、類)和內建(C語言自帶)

整型:signed 有符號類型 字節數 表示范圍signed char 1 -128~127signed short 2 -32768~32767signed int 4 正負20億signed long 4/8 正負20億/正負9開頭的19位整數signed long long 8 正負9開頭的19位整數注意:32位系統下signed long是4字節,64位是8字節注意:signed 默認添加unsigned 無符號類型 字節數 表示范圍unsigned char 1 0~255unsigned short 2 0~65535unsigned int 4 0~40億unsigned long 4/8 0~40億/0~1開頭的20位整數unsigned long long 8 0~1開頭的20位整數注意:由于定義無符號數據時名字麻煩,標準庫把這些類型重新定義以下類型:需要包含頭文件<stdint.h>uint8_t uint16_t uint32_t uint64_tint8_t int16_t int32_t int64_t浮點型:float 4double 8long double 12/16 注意:采用科學計數法,換算真實數據與二進制數據,因此計算浮點型數據時要比整型數據慢得多,編程時盡量使用整型 注意:關注浮點型的精度,小數點后六位有效模擬:字符型:%cchar 字符就是符號或者圖案,在內存中存儲的是整數,需要顯示出符號或圖案時,計算機會根據ASCII碼表中的對應關系顯示出相應的符號或圖案。'\0'== 0'0' == 48'A' == 65'a' == 97布爾型:bool先有C語言之后才有bool類型,所以C語言是沒有真正的bool類型,在stdbool.h 頭文件中用整數進行模擬bool true false 可以使用sizeof運算符 計算類型、變量占用的字節數 例如:sizeof(int)

七、變量與常量
什么是變量:
在程序運行期間數值可以發生變化的叫變量,相當于存放數據的盒子
定義:
類型 變量名;
int num;
變量名取名規則:
1、由字母、數字、下劃線組成
2、不能以數字開頭
3、不能與32個C語言關鍵字重名,能默寫
4、見名知意(功能+類型+作用域)
注意:變量的默認值是隨機的,為了安全起見,一般都初始化為0

使用:賦值:變量名 = 數據; num = 100;運算:變量名*10; num*10; 變量的輸出、輸入:int printf(const char *format, ...);功能:輸出數據format:"雙引號包含的提示信息+占位符"...:變量名列表返回值:輸出字符個數類型占位符:C語言通過占位符的形式傳遞變量的類型%hhd %hd %d %ld %lld 有符號%hhu %hu %u %lu %llu 無符號%f %lf %LF 浮點型%c 字符型int scanf(const char *format, ...); 功能:輸入數據到變量 format:"雙引號包含的占位符" ...:變量的地址列表 &num 返回值:成功輸入的變量的個數 注意:scanf需要的是變量的類型和變量的地址變量地址 = &變量名什么是常量:程序運行期間數值不能發生變化的叫做常量100 默認是 signed int100l signed long100ll signed long long100u unsigned int100lu unsigned long100llu unsigned long long3.14 默認是 double3.14f float3.14l long double問:定義一個表示100年有多少秒的宏常量?(忽略潤平年)#define SEC (60*60*24*365*100u)

八、格式化輸入輸出
%nd 顯示n個字符寬度,不夠則補空格,右對齊
%0nd 顯示n個字符寬度,不夠則補0,右對齊
%-nd 顯示n個字符寬度,不夠則補空格,左對齊
%n.mf 顯示n個字符寬度(小數點也算),不夠則補空格,m表示顯示小數點后幾位(五舍六入)
%g 顯示浮點型數據,不顯示小數點后多余的0

總結

以上是生活随笔為你收集整理的C语言学习笔记1——C语言程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。