天天看點

【C語言】第一章-初識C語言-1寫在前面第一章 初識C語言

寫在前面

  本專題部落客要内容為本人在C語言學習過程中遇到的主要問題和C語言相關知識點的講解,是系統性的技術學習部落格,使用的環境為VS2017。本教程本着先淺後深的學習理念由淺至深進行學習,并且每一章都會附有代碼及案例講解。在學習過程中如果讀者有相關問題請移步我的私人部落格,或發送問題到我的郵箱或者QQ一起探讨!

第一章 初識C語言

第1節

為什麼學習C語言

  C語言是一門通用計算機程式設計語言,廣泛用于底層開發。C語言雖然并不是最完美的語言,但是可以說目前很多的進階程式設計語言的前身都是C語言,是以C語言絕對是開發學習中的第一門語言,他可以幫助你很好的了解計算機原理,了解計算機記憶體管理。而且同時C語言有着簡介的文法,十分簡單易上手,但是想要精通使用C語言還需要長期的學習和鍛煉才能掌握。目前2011年12月8日,國際标準化組織(ISO)和國際電工委員會(IEC) 釋出的 ***C11标準***是C語言的第三個官方标準,也是C語言最新标準,在以前C語言版本基礎上加上了很多新的文法,而本系列部落格也會以C11标準進行C語言講解。

第一個C語言項目

  1、接下來我會在VS2017的環境中展示第一個C語言項目。首先是進行項目建立。

  1、點選建立->項目

  2、在左側邊框欄選擇VisualC++選擇右側邊框欄的空項目

  3、右鍵點選源檔案選擇添加->點選建立項->添加

  這樣既可建立好一個CPP源檔案

  雖說我們寫的是C語言但是建立CPP源檔案照樣是可以寫C語言代碼的,互不影響,如果你想建立一個C語言源檔案在第三部點添加之前把檔案名稱字尾改為 .c檔案既可!!

  2、在建立好源檔案後我們就可以正式開始快樂的敲代碼啦!

#include <stdio.h>//添加頭檔案
int main()//主函數,函數入口
{
	printf("This is my world!!\n");//輸出“This is my world!!”
	return 0;//主函數傳回值,可以忽略這一條語句
}
           

  上面這一段代碼的主要作用就是實作在螢幕上列印一句話的功能。接下來我給大家注意講解每一行代碼的含義。

  第一行代碼是引用了一個标準輸入輸出流的頭檔案<stdio.h>,這個可以說是寫C語言代碼必備的。可能有小夥伴會有疑問,這句話有什麼用?其實寫代碼的過程中并不是所有代碼都由我們自己寫的,在編譯器中會實作留有很多的代碼都是由大佬們實作寫好留下來的,而這些代碼都會被封裝為一個又一個的頭檔案,提供給開發者使用,這樣會給開發者帶來不小的便利,比如說我們下面printf()這個函數就是這個頭檔案所提供給我們的。

  第二行代碼包括下面的一對大括号都被成為主函數。主函數是一個程式的入口函數,程式的啟動和運作都會先從主函數開始,是以在一個程式中主函數是必不可少的。

  主函數裡面的函數printf() 這個函數的主要功能是将括号裡面的内容輸出到螢幕上,在這個函數中大家可以看到目前有一個參數,是一個由雙引号括起來的字元串(字元串的概念之後會學習),字元串裡面的内容大家可以随意改動,輸出自己想要的内容。

  還可以注意到還有一個語句return 0這句話是函數的傳回值。主函數是可以有傳回值的,但是這句話不寫編譯器也不會報錯,之後學了函數的知識後大家會對傳回值有更深的了解。

  在寫完了以上這幾行代碼後就可以編譯運作了,大家可以使用快捷鍵ctrl+f5進行編譯和運作,或者點選調試裡面的開始執行(不調試) 進行執行。

  在運作後大家可能會發現程式運作一閃而過,根本無法看到結果,這是因為程式運作太快了并且沒有暫停是以程式結束了,是以之後我們将代碼改成這個樣子讓他暫停下。

#include <stdio.h>//添加頭檔案
#include <stdlib.h>
int main()//主函數,函數入口
{
	printf("This is my world!!\n");//輸出“This is my world!!”
	system("pause");//暫停語句
	return 0;//主函數傳回值,可以忽略這一條語句
}
           

  可以注意到我們在第6行加了個system語句,這個語句的作用就是讓程式暫停運作。改完之後大家可以重新編譯運作下,就可以看到運作的結果了。

資料類型

  1、為什麼會有不同的資料類型?

  這個問題其實很簡單,因為衆所周知程式在運作時會将資料暫時存儲在記憶體中以友善程式使用,但是在系統給程式配置設定記憶體空間是就會産生問題,為了解決這個問題我該配置設定多少記憶體給它呢?多了的話浪費資源,少了的話不夠用,而且不同的資料不可能使用同一種方式存儲(例如字元和整形以及浮點型的存儲方式都有很大的差別),于是在程式設計語言設計之初,不同的資料類型就産生了。

  2、在C語言中常用的資料類型一共有7種,接下來統一給大家介紹,這在大家之後的程式設計中是必不可少的。

char //字元型:1位元組
	short //短整型:2位元組
	int //整型:4位元組
	long //長整型:4位元組
	long long //更長整型:8位元組
	float //單精度浮點型:4位元組
	double //雙精度浮點型:8位元組
           

  每個不同的資料類型都有不同的所占空間大小,而資料在記憶體中都是以二進制形式進行存儲的。舉個例子,int型占4個位元組,一個位元組是8個bit,就是4 * 8 = 32 個二進制位,所能存儲的資料大小(預設無符号)就是從0 ~ 2 ^ 32 - 1大概就是42億,依次類推。要說明的是整形是存儲整數的無法處理小數,而浮點型是專門處理小數的(自然也能處理整數),而字元型則是處理字元的。資料在記憶體中存儲方式也随着資料類型的不同而不盡相同,其中整形的存儲是根據補碼進行存儲,而字元型則是根據ASCII碼進行換算然後進行存儲。

  所謂ASCII碼不過是将鍵盤上的每一個字元都根據序号進行排序,每一個字元都有着自己編号,而進行記憶體存儲時與ASCII表進行比對,找到自己的編号,然後将字元型轉換為整形數字然後再進行存儲。

變量、常量

  1、所謂變量就是可以改變的量,而常量則是無法被改變的值。

  2、定義變量的方式也十分簡單。

int age = 10;
	float weight = 45.5f;
	char ch = 'w';
           

  大家可以看出來定義變量不過是資料類型(空格)變量名稱即可定義。**而定義一個變量後最立刻對它進行初始化指派,否則變量會存儲一個随機的值,**這十分不便于變量管理。在定義浮點型變量時如果初始化内容後不加f則預設為雙精度浮點型。

  3、變量的分類大緻可以分為:局部變量和全局變量,每個變量都有着自己的作用域和生命周期。局部變量的作用域和生命周期都是大括号,全局變量的作用域和生命周期則是目前整個程式

  具體可以參考以下代碼段:

#include <stdio.h>//添加頭檔案
#include <stdlib.h>
int global = 2019;//全局變量
int main()//主函數,函數入口
{
	int local = 2018;//局部變量
	//下面定義的global不會有問題
	int global = 2010;
	printf("global = %d\n", global);
	system("pause");
}
           

  值得一提的是全局變量在已經定義的前提下,定義相同變量名的局部變量不會報錯,那麼在局部變量的作用域内列印局部變量會出現什麼結果呢?執行過大家肯定會看到,global = 2010。這是因為在局部變量作用域内局部變量會覆寫同名稱的全局變量。

  4、常量則是不能被改變的量,在C語言中常量分為字面常量、const修飾的常變量、#dfine定義的辨別符常量、枚舉常量。

#include <stdio.h>//添加頭檔案
#include <stdlib.h>
#define PIE 3.14
enum Sex//枚舉常量
{
	MALE,
	FEMALE,
	SECRET,
};
int main()//主函數,函數入口
{
	3.14;//字面常量
	1000;//字面常量
	const float pai = 3.14f;//const修飾的常量
	system("pause");
}
           

  關于常量如代碼示範,其中較為特殊的是enum常量,枚舉常量預設元素從0開始指派,是快速定義連續常量的一種方式。#define所用到的宏定義隻是單純的文本替換,具體使用之後會詳細講解。

繼續閱讀