欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

【從0到1手把手帶你學(xué)C語言】初始C語言3-創(chuàng)新互聯(lián)

文章目錄
  • 前言
  • 1. 操作符
    • 1.1 優(yōu)先級
  • 2. 常見關(guān)鍵字
    • 2.1 typedef關(guān)鍵字
    • 2.2 static關(guān)鍵字
      • 2.2.1 修飾局部變量
      • 2.2.2 修飾全局變量
      • 2.2.3 修飾函數(shù)
      • 2.2.4 總結(jié)
  • 3. #define定義的常量的宏
  • 4. 指針
    • 4.1 內(nèi)存
    • 4.2 指針
    • 4.3 指針變量
    • 4.4 指針變量的大小
  • 5. 結(jié)構(gòu)體
    • 5.1 結(jié)構(gòu)體的創(chuàng)建
    • 5.2 引用結(jié)構(gòu)體
  • 最后

創(chuàng)新互聯(lián)提供成都網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)頁設(shè)計,品牌網(wǎng)站設(shè)計廣告投放平臺等致力于企業(yè)網(wǎng)站建設(shè)與公司網(wǎng)站制作,10余年的網(wǎng)站開發(fā)和建站經(jīng)驗,助力企業(yè)信息化建設(shè),成功案例突破近1000家,是您實現(xiàn)網(wǎng)站建設(shè)的好選擇.前言

本章內(nèi)容是初始C語言的最后一節(jié),后續(xù)會逐一創(chuàng)作更詳細(xì)的文章

1. 操作符

本節(jié)簡單介紹幾種操作符,后續(xù)會出文章細(xì)說
操作符可以分為以下幾類:

1.1 優(yōu)先級

在這里插入圖片描述

算術(shù)運算符中/和%值得注意
/如果兩個操作數(shù)都是整數(shù),那么結(jié)果是兩個整數(shù)相除的商,比如6/5=1
想要得到小數(shù),兩操作數(shù)至少有一個是小數(shù),6.0/5=1.2
%兩操作數(shù)必須是整數(shù),結(jié)果為兩數(shù)相除后的余數(shù),
余數(shù)符號和分子相同
(-3) % 5 = -3
3% (-5) = 3
單目運算符中的++前置和++后置注意區(qū)分(--類似,以++舉例)
#includeint main()
{int a = 2;
	int b = a++;
	printf("%d\n", b);//2
	printf("%d\n", a);//3
	a = 2;
	b = ++a;
	printf("%d\n", b);//3
	printf("%d\n", a);//3
	return 0;
}
前置++表示先自增,在引用
后置++表示先引用,在自增

注:[] . ->操作符在本文后續(xù)會介紹,與位有關(guān)的操作符后面會出文章細(xì)說


2. 常見關(guān)鍵字

前面我們介紹變量時說過變量的命名不能用關(guān)鍵字,那么C語言都有哪些關(guān)鍵字呢?
C語言常用的關(guān)鍵字有

數(shù)據(jù)類型:
1.內(nèi)置類型:char short int float long double ,long long ,long double,void
2.構(gòu)造類型:enum ,struct,union
3.其他:const extern signed unsigned
存儲類型:auto static register
循環(huán):while do for continue break 
選擇:if else switch case default break 
特殊:sizeof return goto typedef volatile
2.1 typedef關(guān)鍵字

typedef亦為類型定義,也可以稱類型重定義,類型替換

當(dāng)某種類型名比較復(fù)雜,用typedef可以簡化類型名稱

在這里插入圖片描述

通常用typedef重定義結(jié)構(gòu)體類型


2.2 static關(guān)鍵字
在C語言中:
static是用來修飾變量和函數(shù)的
1. 修飾局部變量-稱為靜態(tài)局部變量
2. 修飾全局變量-稱為靜態(tài)全局變量
3. 修飾函數(shù)-稱為靜態(tài)函數(shù)
2.2.1 修飾局部變量

改變局部變量的生命周期
無static定義

static定義

說明static修飾局部變量改變變量的生命周期,離開test函數(shù)時a不會銷毀。
所以下次調(diào)用test函數(shù)時不會創(chuàng)建變量a,更不會初始化。
2.2.2 修飾全局變量

無static定義

static定義

報錯為無法解析g_val
說明此時全局變量不具有外部鏈接屬性
2.2.3 修飾函數(shù)

無static定義
在這里插入圖片描述

static定義
在這里插入圖片描述

可以看出來 static修飾函數(shù)使函數(shù)只能在當(dāng)前的源文件中引用該函數(shù)
2.2.4 總結(jié)
1.修飾局部變量,改變局部變量的存儲方式(堆存儲變?yōu)閿?shù)據(jù)段存儲),體現(xiàn)為生命周期變長
2.修飾全局變量,改變?nèi)肿兞康逆溄訉傩裕ㄍ獠挎溄幼優(yōu)閮?nèi)部鏈接),體現(xiàn)為作用域變小
3.修飾函數(shù),改變函數(shù)的連接屬性(外部鏈接變?yōu)閮?nèi)部鏈接)
只能在定義函數(shù)的源文件中引用函數(shù)

附C和指針里的總結(jié)


3. #define定義的常量的宏

本屆內(nèi)容僅僅簡單的介紹一下宏定義,后期會出詳細(xì)的文章與大家探討

#define MAX 100 //定義常量

我們想寫a+b的函數(shù)可以這么寫

int add(int a, int b)
{return a + b;
}
int main()
{int a = 10, b = 20;
int ret = add(a,b);//運行的時候會進(jìn)入函數(shù)內(nèi)部并且?guī)С龇祷刂?printf("%d", ret);
return 0;
}

如果我們定義宏可以這么寫

#define ADD(a,b) ((a)+(b))
int main()
{int a = 10, b = 20;
int ret = ADD(a,b); //編譯的時候就直接將ADD(a,b)替換成((a)+(b))
pritnf("%d", ret);
return 0;

總結(jié):

1.宏定義是替換,函數(shù)調(diào)用會進(jìn)入函數(shù)內(nèi)部并且返回值
2.宏定義在編譯的時候就會進(jìn)行,函數(shù)調(diào)用程序運行時才會執(zhí)行
4. 指針

在熟悉指針之前我們先來說一下內(nèi)存

4.1 內(nèi)存
內(nèi)存是電腦上特別重要的存儲器,計算機(jī)中程序的運行都是在內(nèi)存中進(jìn)行的

在這里插入圖片描述
任務(wù)管理器中可以看見每個程序?qū)?nèi)存的占用有多少,當(dāng)程序運行時,會向內(nèi)存中申請存儲空間存儲程序運行所需要的相關(guān)數(shù)據(jù)。
打個比方,每一個房間都需要空間,而公寓給了每個房間所需要的空間,內(nèi)存就相當(dāng)于公寓,房間相當(dāng)于各種各樣的數(shù)據(jù),數(shù)據(jù)不同,所占用的空間不同,這也是不同程序所占用內(nèi)存不同的原因

常見的內(nèi)存有4G ,8G ,16G ,32G

現(xiàn)在我們知道,內(nèi)存是存放數(shù)據(jù)的
每個房間都是獨立的,用隔板將它們分開,并且每個房間都有門牌號,以便我們可以找到對應(yīng)的門戶,因此,對于內(nèi)存

1.內(nèi)存首先被劃分為一個個的內(nèi)存單元
2.內(nèi)存單元有編號

針對結(jié)論1,每個內(nèi)存單元占多大空間?
每個內(nèi)存單元占1字節(jié)
解釋:
我們知道存儲容量單位有bit–byte–kb–Mb……而占存儲容量最小的數(shù)據(jù)類型是char 需要8bit位,如果選擇bit最為內(nèi)存單元,而每一個內(nèi)存單元對應(yīng)一個編號,一個char就需要8個編號,過于奢侈,如果選擇一個kb為內(nèi)存單元,那么一個內(nèi)存單元將可以存放1024個char數(shù)據(jù),但是只有一個編號,所以編號和數(shù)據(jù)不能一一對應(yīng),綜上,選擇1byte為內(nèi)存單元最合適。
針對結(jié)論2,內(nèi)存單元是如何編號的?
內(nèi)存單元的編號是從32個0到32個1(32位)
解釋:
32位機(jī)器上,有32根地址線
的撒
每根地址線在通電情況下有高電頻和低電頻兩種狀態(tài),所以32根地址線全部通電情況下有2^32種狀態(tài),分別是

因而我們將2^32種通電狀態(tài)作為內(nèi)存單元的編號

32位機(jī)器大內(nèi)存為4G,理由如下:
32位機(jī)器的內(nèi)存單元編號最多有2^32種,即內(nèi)存最多有2^32個小單元
,而每一種編號對應(yīng)的內(nèi)存單元占一個字節(jié),所以內(nèi)存共占2^32byte,
1KB=1024byte,1MB=1024KB,1GB=1024MB,2^32字節(jié)剛好就是4GB
同理64位機(jī)器內(nèi)存大為8GB

內(nèi)存單元的編號等于地址等于指針


4.2 指針

指針就是地址,地址就是指針
我們現(xiàn)在來看程序運行時是怎么使用內(nèi)存的

#includeint main()
{int a = 10;
return 0;
}

我們調(diào)式一下看一下內(nèi)存的分布
內(nèi)存編號和數(shù)據(jù)內(nèi)容均是十六進(jìn)制顯示

我們再來看一下a的地址

a占4個字節(jié) 我們打印a的地址 屏幕上顯示00EFFE08,
說明a的地址是第一個字節(jié)的地址
4.3 指針變量
a中存放的是整數(shù),我們稱a為整形變量
&a是一個指針,所以我們將存放指針的變量稱為指針變量

指針變量具有指向性

pa中存放的是a的地址,所以我們可以通過pa找到a,相當(dāng)于我知道你家地址,我就可以找到你

int * pa
*說明pa是指針變量
int說明pa所指向的對象是int類型

如何通過pa找到a?

*pa = 20;//*是解引用操作符,表示通過pa找到pa所指向的a
同理,指向字符的指針這么定義

```c
![
](https://img-blog.csdnimg.cn/fd503b17e5144efd9a6d302d94c0c797.png)

4.4 指針變量的大小

前面我們使用sizeof求過基本數(shù)據(jù)類型的大小,那么指針的大小是多少呢?

我們發(fā)現(xiàn)指針在32平臺上的字節(jié)數(shù)都是4個字節(jié)
這是為什么呢?

指針變量存儲的值是地址,而前面說過內(nèi)存單元的編號取值為32個0到32個1,
即指針的取值為32個0到32個1,32個二進(jìn)制剛好是4個字節(jié)
對于64為平臺,64根地址線,指針取值為64個0到64個1,占8個字節(jié)

總結(jié):
-` 變量的地址是變量占據(jù)的第一個字節(jié)地址

  • 指針是內(nèi)存中的一個存儲單元,編號由32/64個0、1組成
  • 指針變量的字節(jié)數(shù)僅僅取決與平臺的位數(shù)`

5. 結(jié)構(gòu)體

前面我們已經(jīng)了解了C語言的基本類型

int,char,short,long,long long,float,double,long double 
指針類型等

但是上述類型具有單一性,只能用來定義只具有一種性質(zhì)的個體,這是不夠的,對于描述一個學(xué)生,我們不能用上述基本類型的任意一個來定義,因為學(xué)生具有性別、年齡、學(xué)號等多個性質(zhì),因而,我們創(chuàng)建了自定義數(shù)據(jù)類型,結(jié)構(gòu)體就是其中一種

5.1 結(jié)構(gòu)體的創(chuàng)建
struct Stu  //創(chuàng)建了一種類型,該類型屬于自定義類型中的結(jié)構(gòu)體類型,該類型名叫struct Stu
{char name[20];
 int age;              //{}內(nèi)的所有變量稱為結(jié)構(gòu)體成員,也叫做域
 char sex[5];
 char id[15];
}
struct Stu student1 = {"小紅",10,"女","12345"};
//表示用該類型定義了一個變量并初始化
5.2 引用結(jié)構(gòu)體

對于結(jié)構(gòu)體等有兩個專屬操作符,分別是->和.
例如,student1過生日了,年齡增加了一歲,可以這么表示

student1.[age] = student1.[age] + 1; 
//student1表示找到需要引用的結(jié)構(gòu)體變量,操作符.表示找到該變量的某個成員
找到age成員并且讓它加一

當(dāng)我們不知道結(jié)構(gòu)體變量的名字時,但是直到它的地址

struct Stu* ps = &student1;
ps->age = ps->age + 1; //等價*(ps).[age]
操作符->的做操作數(shù)是針對指針,表示找到地址值為ps的變量,->表示找到該變量的某個成員

最后

初始C語言1
初始C語言2
初始C語言3
三篇文章已經(jīng)將C語言的知識點粗略的介紹的一遍,后續(xù)的文章會逐一針對每章內(nèi)容進(jìn)行更深入、詳細(xì)的討論,如果您覺得哪里寫的有問題,歡迎指正!
最后:如果您覺得文章對您有幫助,請不要吝嗇手中的贊,這對我來說很重要,也是我繼續(xù)創(chuàng)作的動力,謝謝!

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

本文題目:【從0到1手把手帶你學(xué)C語言】初始C語言3-創(chuàng)新互聯(lián)
新聞來源:http://www.chinadenli.net/article22/djdojc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化網(wǎng)站營銷自適應(yīng)網(wǎng)站靜態(tài)網(wǎng)站網(wǎng)站設(shè)計域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作