??專欄導(dǎo)讀
??作者簡介:花想云 ,在讀本科生一枚,C/C++領(lǐng)域新星創(chuàng)作者,新星計劃導(dǎo)師,阿里云專家博主,CSDN內(nèi)容合伙人…致力于 C/C++、Linux 學(xué)習(xí)。
??專欄簡介:本文收錄于 C語言從入門到精通專欄 。
??文章導(dǎo)讀
本篇文章主要內(nèi)容為了解C語言階段我們將要學(xué)習(xí)的內(nèi)容
。在本文中,我們不會
對每個知識點(diǎn)都進(jìn)行詳細(xì)介紹,旨在大致了解即可
。文章中提到的所有知識點(diǎn)都會在后面的文章中詳細(xì)講解。
??什么是C語言?
C語言是一門通用計算機(jī)編程語言
,廣泛應(yīng)用于底層開發(fā)
。通俗的話講,C語言就是我們?nèi)伺c計算機(jī)溝通語言。有的小伙伴可能聽說過很多編程語言,例如是否經(jīng)??吹?code>Java、python
等字眼。
計算機(jī)技術(shù)發(fā)展至今,編程語言層出不窮,各種各樣的語言經(jīng)歷著誕生、發(fā)展、有的早已被淘汰、有的時隔多年依舊熠熠生輝。C語言就是后者。
C生萬物,編程之本!
長遠(yuǎn)IT職業(yè)發(fā)展的首選,C語言是母體語言,是人機(jī)交互接近底層的橋梁,學(xué)會C,相當(dāng)于掌握技術(shù)核心知識點(diǎn)一竿子打通。 IT行業(yè),一般每10年就有一次變革50年間,在TIOBE
排行榜中C/C++位置長期霸占前三名
,沒有絲毫撼動,可謂經(jīng)典永不過時!
??第一個C語言程序
#include <stdio.h>
int main()
{
printf("hello world\n");
return 0;
}
相信每位程序員都曾在寫過這樣一段代碼,它所實(shí)現(xiàn)的功能就是在屏幕上打印出hello world
,當(dāng)你在屏幕上看到這句話時,那么恭喜你推開了C語言世界的大門!這里不對這段代碼做出解釋,我們接著往下看~
??數(shù)據(jù)類型
C語言中包含各種各樣的數(shù)據(jù)類型。
char //字符數(shù)據(jù)類型
short //短整型
int //整形
long //長整型
long long //更長的整形
float //單精度浮點(diǎn)數(shù)
double //雙精度浮點(diǎn)數(shù)
那么什么是數(shù)據(jù)類型呢?生活中存在各種各樣的數(shù)據(jù),一串?dāng)?shù)字,一句話…存在這么多的類型,其實(shí)是為了更加豐富的表達(dá)生活中的各種值。
數(shù)據(jù)類型的存在是為了定義變量,描述該變量的特性
以及所占的空間大小
。
int age = 150;
float weight = 45.5f;
char ch = 'w';
而且每種數(shù)據(jù)類型還有著大小之分,我們可以用關(guān)鍵字sizeof
求出每種類型數(shù)據(jù)的大小。至于sizeof
是干什么用的,現(xiàn)在不必糾結(jié)。
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char));//1
printf("%d\n", sizeof(short));//2
printf("%d\n", sizeof(int));//4
printf("%d\n", sizeof(long));//4
printf("%d\n", sizeof(long long));//8
printf("%d\n", sizeof(float));//4
printf("%d\n", sizeof(double));//8
printf("%d\n", sizeof(long double));//8
return 0;
}
運(yùn)行結(jié)果如下圖所示。
??變量、常量、字符串
生活中的有些值是不變的(比如:圓周率,性別,身份證號碼,血型等等),有些值是可變的(比如:年齡,體重,薪資)。
不變的值,C語言中用常量
的概念來表示,變得值C語言中用變量
來表示。
??定義變量的方法
int age = 150;
float weight = 45.5f;
char ch = 'w';
這里的=并不是數(shù)學(xué)意義上的兩者相等,而是賦值。例如此時的age是150。
??變量的分類
變量按照使用范圍可分為
全局變量
局部變量
#include <stdio.h>
int global = 2019;//全局變量
int main()
{
int local = 2018;//局部變量
//下面定義的global會不會有問題?
int global = 2020;//局部變量
printf("global = %d\n", global);
return 0;
}
??變量的使用
#include <stdio.h>
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("輸入兩個操作數(shù):>");//提示輸入
scanf("%d %d", &num1, &num2);//將輸入的兩個數(shù)字存放到num1,num2
sum = num1 + num2;//將num1與num2的和賦值給sum
printf("sum = %d\n", sum);//打印sum的值
return 0;
}
提示
-
scanf
:從鍵盤上獲取數(shù)據(jù),保存到變量中。
??變量的作用域和生命周期
作用域
作用域(scope)
是程序設(shè)計概念,通常來說,一段程序代碼中所用到的名字并不總是有效/可用的而限定這個名字的可用性的代碼范圍
就是這個名字的作用域。
-
局部變量
的作用域是變量所在的局部范圍
。 -
全局變量
的作用域是整個工程
。
生命周期
變量的生命周期
指的是變量的創(chuàng)建
到變量的銷毀
之間的一個時間段
。
-
局部變量
的生命周期是:進(jìn)入作用域生命周期開始,出作用域生命周期結(jié)束。 -
全局變量
的生命周期是:整個程序的生命周期。
??常量
C語言中的常量和變量的定義的形式有所差異,C語言中的常量分為以下以下幾種:
字面常量
-
const
修飾的常變量
-
#define
定義的標(biāo)識符常量
枚舉常量
#include <stdio.h>
//舉例
enum Sex
{
MALE,
FEMALE,
SECRET
};
//括號中的MALE,FEMALE,SECRET是枚舉常量
int main()
{
//字面常量演示
3.14;//字面常量
1000;//字面常量
//const 修飾的常變量
const float pai = 3.14f; //這里的pai是const修飾的常變量
pai = 5.14;//是不能直接修改的!
//#define的標(biāo)識符常量 演示
#define MAX 100
printf("max = %d\n", MAX);
//枚舉常量演示
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
//注:枚舉常量的默認(rèn)是從0開始,依次向下遞增1的
return 0;
}
常量
顧名思義就是不可變的值。例如“5”
這個數(shù)字,數(shù)學(xué)中的常數(shù),C語言里我們稱之為常量
。如果我們這樣讓5=4
,顯然這是不可取
的,我們無法改變它的值。
??字符串
"hello world"
這種由雙引號
引起來的一串字符稱為字符串字面值
,或者簡稱字符串
;在C語言中,其實(shí)是沒有字符串這種類型的,我們通常稱這種字符數(shù)組
為字符串
;
??轉(zhuǎn)義字符
顧名思義,轉(zhuǎn)義字符就是將一個字符原來的含義改變了,通常的做法是\+字符
。
下面為一些常見的轉(zhuǎn)義字符。
轉(zhuǎn)義字符 | 釋義 |
---|---|
? | -在書寫連續(xù)多個問號時使用,防止他們被解析成三字母詞- |
’ | 用于表示字符常量‘ |
" | 用于表示一個字符串內(nèi)部的雙引號 |
\ | 用于表示一個反斜杠,防止它被解釋為一個轉(zhuǎn)義序列符。 |
\a | 警告字符,蜂鳴 |
\b | 退格符 |
\f | 進(jìn)紙符 |
\n | 換行 |
\r | 回車 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1~3個八進(jìn)制的數(shù)字。 如: \130 X |
\xdd | dd表示2個十六進(jìn)制數(shù)字。 如: \x300 |
??注釋
注釋有兩種風(fēng)格:
-
/*xxxxxx*/
,缺陷:不能嵌套注釋。
/* 這是一段注釋*/
-
//xxxxxxxx
,可以注釋一行也可以注釋多行
//這是一段注釋
注釋的作用:
- 代碼中有不需要的代碼可以直接刪除,也可以注釋掉;
- 代碼中有些代碼比較難懂,可以加一下注釋文字;
為了防止我們以后寫的代碼太過深奧,擔(dān)心以后的自己的不懂時,我們盡量學(xué)會很好的使用注釋。
??選擇語句
如果你好好學(xué)習(xí),走上人生巔峰,如果你不學(xué)習(xí),畢業(yè)等于失業(yè),回家賣紅薯,這就是選擇。
????
在這里我們用if語句
實(shí)現(xiàn):
#include <stdio.h>
int main()
{
int coding = 0;
printf("你會好好學(xué)習(xí)嗎(選擇1 or 0):>");
scanf("%d", &coding);
if (coding == 1)
{
prinf("年薪百萬\n");
}
else
{
printf("回家賣紅薯\n");
}
return 0;
}
??循環(huán)語句
有些事必須一直做,比如我日復(fù)一日的為我的博客求點(diǎn)贊,比如大家,日復(fù)一日的學(xué)習(xí)。C語言中如何實(shí)現(xiàn)循環(huán)呢?一般有三種方式:
while語句
for語句
do ... while語句
三種循環(huán)語句在不同的場景下有著各自的長處,今天我們不過多介紹,下面用while語句
來展示一下。
場景:小明突然有一天受到老師感化,立志要好好學(xué)習(xí),于是決定每天寫一行代碼。寫夠一百行時就發(fā)條朋友圈。
#include <stdio.h>
int main()
{
int count = 0;
while (count < 100)
{
count++;
}
printf("%d\n", count);
printf("我要發(fā)朋友圈!");
return 0;
}
??函數(shù)
C語言中的函數(shù)就是可以實(shí)現(xiàn)某種功能的模塊
。例如,加減乘除等;
#include <stdio.h>
int Add(int x, int y) {
int z = x+y;
return z; }
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("輸入兩個操作數(shù):>");
scanf("%d %d", &num1, &num2);
sum = Add(num1, num2);
printf("sum = %d\n", sum);
return 0;
}
C語言中,我們可以自己設(shè)置各種各樣的函數(shù)來實(shí)現(xiàn)我們的功能。我們把每種功能封裝
起來,每個函數(shù)都獨(dú)立的完成一件事情,避免了我們的代碼太過復(fù)雜,沒有條理。
??數(shù)組
假設(shè)我們要存儲1-10的數(shù)字,怎么存儲?C語言中給了數(shù)組的定義:一組相同類型元素的集合
。
數(shù)組的定義
?int array[10] = {12,14,16,16,8,16,19,18,19,10};//定義一個整形數(shù)組,最多放10個元素
數(shù)組的下標(biāo)
數(shù)組的每個元素都有一個下標(biāo),下標(biāo)是從0開始的
。數(shù)組元素可以通過下標(biāo)來訪問的。
如果我們想要得到數(shù)組里的從前往后的第3個元素,就可以用[] 來完成。
?int array[10] = {12,14,16,16,8,16,19,18,19,10};
printf("%d\n",array[2];
數(shù)組的使用
當(dāng)我們想一次性將整型數(shù)組里的內(nèi)容全部打印的話,需要借助之前提到的循環(huán)語句
;
#include <stdio.h>
int main()
{
int i = 0;
int array[10] = {1,2,3,4,5,6,7,8,9,10};
for(i=0; i<10; i++)
{
printf("%d ", array[i]);
}
printf("\n");
return 0;
}
??操作符
C語言中有各種各樣的操作符,如下;
- 算術(shù)操作符
+ - * / %
- 移位操作符
>> <<
- 位操作符
& ^ |
- 賦值操作符
= += -= *= /= &= ^= |= >>= <<=
- 單目操作符
! 邏輯反操作
- 負(fù)值
+ 正值
& 取地址
sizeof 操作數(shù)的類型長度(以字節(jié)為單位)
~ 對一個數(shù)的二進(jìn)制按位取反
-- 前置、后置--
++ 前置、后置++
* 間接訪問操作符(解引用操作符)
(類型) 強(qiáng)制類型轉(zhuǎn)換
- 關(guān)系操作符
>
>=
<
<=
!= 用于測試“不相等”
== 用于測試“相等”
- 邏輯操作符
&& 邏輯與
|| 邏輯或
- 條件操作符
exp1 ? exp2 : exp3
- 逗號表達(dá)式
exp1, exp2, exp3, …expN
- 下標(biāo)引用、函數(shù)調(diào)用和結(jié)構(gòu)體成員
[] () . ->
??常見關(guān)鍵字
auto break case char const continue default do double else enum
extern float for goto if int long register return short signed
sizeof static struct switch typedef union unsigned void volatile while
這些關(guān)鍵字無非就是C語言為我們提供的具有某種功能的標(biāo)識
。其多是英文單詞或者英文單詞的縮略形式,而其本身含義也相差不多。例如char就是character(字符)的縮寫,而它就是代表著字符型這種數(shù)據(jù)類型。
??#define定義常量和宏
//define定義標(biāo)識符常量
#define MAX 1000
//define定義宏
#define ADD(x, y) ((x)+(y))
#include <stdio.h>
int main()
{
int sum = ADD(2, 3);
printf("sum = %d\n", sum);
sum = 10*ADD(2, 3);
printf("sum = %d\n", sum);
return 0;
}
??指針
變量是創(chuàng)建內(nèi)存中的(在內(nèi)存中分配空間的),每個內(nèi)存單元都有地址,所以變量也是有地址的。
我們可以將某個變量的地址保存到新的變量中,而這個新的變量就叫做指針變量
,簡稱指針
。
#include <stdio.h>
int main()
{
int num = 10;
int *p = #
*p = 20;
return 0;
}
??結(jié)構(gòu)體
結(jié)構(gòu)體是C語言中特別重要的知識點(diǎn),結(jié)構(gòu)體使得C語言有能力描述復(fù)雜類型。比如描述學(xué)生,學(xué)生包含: 名字+年齡+性別+學(xué)號 這幾項(xiàng)信息。這里只能使用結(jié)構(gòu)體來描述了。文章來源:http://www.zghlxwxcb.cn/news/detail-408845.html
//結(jié)構(gòu)體類型的定義
struct Stu
{
char name[20];//名字
int age; //年齡
char sex[5]; //性別
char id[15]; //學(xué)號
};
到此為止,C語言的知識點(diǎn)已經(jīng)預(yù)覽完畢,在接下來的文章中,我們將會詳細(xì)學(xué)習(xí)每一個知識點(diǎn),一起期待吧~文章來源地址http://www.zghlxwxcb.cn/news/detail-408845.html
到了這里,關(guān)于『C語言從入門到進(jìn)階』第 ? 期 - 初識C語言 | C語言知識預(yù)覽的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!