C語言基礎學習筆記--Day01
C語言概述
本文章為學習筆記,如有不足還請多多包涵。同時歡迎各位一起學習交流。
1.1 什么是計算機語言
人和人之間的交流需要通過語言。人和計算機交流信息也要解決語言問題。需要創造一種計算機和人都能夠識別的語言,這就是計算機語言。計算機語言經歷了以下幾個發展階段。
機器語言 計算機工作基于二進制,從根本上說,計算機只能識別和接受由0和1組成的指令。在計算機發展初期,一般計算機的指令長度為16,即以16個二進制數(0或1)組成一條指令,16個0和1可以組成各種排列組合。
例如:1011011000000000
這種計算機能直接識別和接受的二進制代碼稱為機器指令。機器指令的集合就是該計算機的機器語言。在語言的規則中規定各種指令的表示形式以及他的作用。機器語言與人民習慣用的語言差別太大,難學,難寫,難記,難檢查,難修改,難以推廣使用,因此初期只有極少數的計算機專業人員會編寫計算機程序。
符號語言 為了克服機器語言的上述缺點,人們造出了符號語言,他們用一些英文字母和數字表示一個指令。例如用ADD代表“加”,SUB代表“減”,LD代表“傳送”等。
ADD A,B (執行A+B=A,將寄存器A中的數與寄存器B中的數相加,放到寄存器A中)
計算機并不能直接識別和執行符號語言的指令,需要用稱為匯編程序的軟件吧符號語言的指令轉換為機器指令。一般,一條符號語言的指令對應轉換為一條機器指令。轉換過程為“代真”或“匯編”,因此,符號語言又稱為符號匯編語言或匯編語言。
匯編語言比機器語言簡單好記,但仍難以普及,只在專業人員中使用。
不同型號的計算機的機器語言和匯編語言是互不通用的。機器語言和匯編語言是完全依賴于具體機器特性的,是面向機器的語言。由于它“貼近”計算機,故稱為計算機低級語言
高級語言 為了克服低級語言的缺點,20世紀50年代創造出了第一個計算機高級語言——FORTARN語言。它很接近于人們習慣使用的自然語言和數學語言,
//例如在FORTARN語言中,計算輸出3.5*6sin(π/3)
PRINT *,3.5*6*SIN(3.1415926/3)
這種語言功能很強,且不依賴于具體機器,用它寫出的程序對任何型號的計算機都適用,它與具體機器距離較“遠”,故稱為計算機高級語言。
計算機也不能直接識別高級語言程序,也要進行“翻譯”。用一種稱為編譯器的軟件把用高級語言編寫的程序(源程序)轉換為機器指令的程序(目標程序),然后讓計算機執行機器指令程序,最后得到結果。高級語言的一個語句往往對應多條機器指令。
高級語言經歷了不同的發展階段:
(1)非結構化的語言
(2)結構化語言
(3)面向對象語言
1.2 C語言的發展及其特點
1972年,美國貝爾實驗室的D.M.Ritchie在B語言的基礎上設計出來C語言。1983年,美國國家標準協會(ANSI),根據C語言問世以來各種版本對C語言發展和擴充,制定了第一個C語言標準草案('83 ANSI)。1989年,ANSI公布了一個完整的C語言標準——ANSI X3. 159-1989(常稱為ANSI C 或 C89)。1990年,國際化標準組織ISO接受C89作為國際標準ISO/IEC 9899:1990,他和ANSI的C89是相同的。1999年,ISO又對C語言標準進行修訂,在基本保留C語言特征的基礎上,針對應用的需要,增加了一些功能,并在2001年和2004年先后進行了兩次技術修正,它被稱為C99,C99是C89的擴充。
C語言的特點:
(1)語言簡潔、緊湊,使用方便靈活
(2)運算符豐富
(3)數據類型豐富
(4)具有結構化的控制語句
(5)語法限制不太嚴格,程序設計自由度大
(6)C語言允許直接訪問物理地址,能進行位操作,能實現匯編語言的大部分功能,可以直接對硬件進行操作
(7)用C語言編寫的程序可移植性好
(8)生成目標代碼質量高,程序執行率高
1.3 簡單的C語言程序
屏幕上打印 Hello Woeld
#include<stdio.h>
int main(){
printf("Hello World");
return 0;
}
代碼解析:
//導入標準輸入輸出庫
#include<stdio.h> //包含頭文件 std 標準庫 io input output 輸入輸出庫 <>系統庫 “”自定義頭文件
//主函數 一個程序有且只能有一個主函數
//函數的返回值類型 int整型
//函數的參數類型 void空類型
//{}程序體代碼體 函數體
int main(void){
//打印函數“”引起來的稱為字符串常量
printf("Hello World");
//函數的返回值 如果在主函數中遇到return代表程序結束
return 0;
}
C語言程序結構
(1)一個程序有一個或多個源程序文件組成,在一個源程序文件中可以包括3個部分:
① 預處理指令
② 全局聲明
③ 函數定義
(2)函數是C程序的主要組成部分,一個C語言程序是由一個或多個函數組成的,其中必須包含一個main函數(且只能有一個main函數)
(3)一個程序包括兩個部分
①函數首部。即函數的第一行,包括函數名、函數類型、函數參數名、參數類型
②函數體。即函數首部下面花括號內的部分。函數體一般包括以下兩部分。
聲明部分。聲明部分包括:定義在本函數中所用到的變量;對本函數所調用函數進行聲明。
執行部分。由若干個語句組成,指定在函數中所進行的操作。
(4)程序總是從main函數開始執行的
(5)程序中要求計算機完成的操作是由函數中的C語句完成的
(6)在每個數據聲明和語句的最后必須有一個分號
(7)C語言本身不提供輸入輸出語句
(8)程序應當包含注釋
1.4 C語言編譯過程
1、預處理
- 宏定義展開
- 頭文件展開
- 刪除注釋
- 條件編譯
2、編譯
- 檢查語法
- 轉化成匯編語言
3、匯編
- 將匯編語言轉化成機器語言
4、鏈接
- 將庫文件鏈接變成可執行文件
1.5 集成開發環境IDE
集成開發環境(IDE,Integrated Development Environment )是用于提供程序開發環境的應用程序,一般包括代碼編輯器、編譯器、調試器和圖形用戶界面工具。集成了代碼編寫功能、分析功能、編譯功能、調試功能等一體化的開發軟件服務套。所有具備這一特性的軟件或者軟件套(組)都可以叫集成開發環境。
Qt Creator
Qt Creator是跨平臺的 Qt IDE, Qt Creator 是 Qt 被 Nokia 收購后推出的一款新的輕量級集成開發環境(IDE)。此 IDE 能夠跨平臺運行,支持的系統包括 Linux(32 位及 64 位)、Mac OS X 以及 Windows。根據官方描述,Qt Creator 的設計目標是使開發人員能夠利用 Qt 這個應用程序框架更加快速及輕易的完成開發任務
Microsoft Visual Studio
Microsoft Visual Studio(簡稱VS)是美國微軟公司的開發工具包系列產品。VS是一個基本完整的開發工具集,它包括了整個軟件生命周期中所需要的大部分工具,如UML工具、代碼管控工具、集成開發環境(IDE)等等,所寫的目標代碼適用于微軟支持的所有平臺。Visual Studio是目前最流行的Windows平臺應用程序的集成開發環境。
Visual Studio4396錯誤
由于微軟在VS中不建議再使用C的傳統庫函數scanf,strcpy,sprintf等,所以直接使用這些庫函數會提示C4996錯誤:
VS建議采用帶_s的函數,如scanf_s、strcpy_s,但這些并不是標準C函數。要想繼續使用此函數,需要在源文件中添加以下指令就可以避免這個錯誤提示:
#define _CRT_SECURE_NO_WARNINGS //這個宏定義最好要放到.c文件的第一行
#pragma warning(disable:4996) //或者使用這個
智能推薦
Spring學習筆記(day01)
文章目錄 spring_day01 1 spring介紹 1.1 三層架構中spring位置 1.2 spring一站式框架 2 spring搭建 2.1 導包 2.2 創建一個對象 2.3 書寫配置注冊對象到容器 3 spring概念 3.1思想 3.1.1 ioc 3.1.2 di注入 3.2 applicationContext&BeanFactory 3.2.1 BeanFacto...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
猜你喜歡
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...
styled-components —— React 中的 CSS 最佳實踐
https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...