中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

正規(guī)網(wǎng)站制作公司哪家好百度軟文推廣怎樣收費(fèi)

正規(guī)網(wǎng)站制作公司哪家好,百度軟文推廣怎樣收費(fèi),小程序開發(fā)和網(wǎng)站開發(fā)的區(qū)別,深圳外貿(mào)公司電話?個(gè)人主頁(yè): Anmia.🎉所屬專欄: C Language 🎃操作環(huán)境: Visual Studio 2019 版本 本篇目的是面向編程新手,沒接觸過編程的人。以及C進(jìn)階的導(dǎo)讀。 內(nèi)容是C語(yǔ)言重要知識(shí)點(diǎn)的簡(jiǎn)單解釋,不做詳解。給…

?個(gè)人主頁(yè):?Anmia.
🎉所屬專欄:?C Language

🎃操作環(huán)境:?Visual Studio 2019 版本

?本篇目的是面向編程新手,沒接觸過編程的人。以及C進(jìn)階的導(dǎo)讀。

內(nèi)容是C語(yǔ)言重要知識(shí)點(diǎn)的簡(jiǎn)單解釋,不做詳解。給新手對(duì)初級(jí)C框架的認(rèn)識(shí)。由于篇幅上萬(wàn)字,干貨滿滿。請(qǐng)大家沉下心看,一定有新的發(fā)現(xiàn)。

目錄

1.什么是C語(yǔ)言?

2.C語(yǔ)言代碼的基本格式

3.數(shù)據(jù)類型?

4.變量、常量

?4.1 定義變量的方法

4.2 變量的分類

4.3 變量的使用

4.4 變量的作用域和生命周期?

4.5 常量

5.字符串+轉(zhuǎn)義字符+注釋

字符串

轉(zhuǎn)義字符

轉(zhuǎn)義字符 \??

轉(zhuǎn)義字符 \' 與 \"?

?轉(zhuǎn)義字符 \t

轉(zhuǎn)義字符\ddd和\xdd

轉(zhuǎn)義字符 \\

?轉(zhuǎn)義字符\a

轉(zhuǎn)義字符\b

轉(zhuǎn)義字符\f

轉(zhuǎn)義字符\v

轉(zhuǎn)義字符\r

注釋?

?6.選擇語(yǔ)句

if ?else

switch case

7.循環(huán)語(yǔ)句

while

?do...while

for

8.函數(shù)

庫(kù)函數(shù)?

自定義函數(shù)

9.數(shù)組

數(shù)組的定義

數(shù)組的下標(biāo)

數(shù)組的使用

操作符

?10.常見關(guān)鍵字

關(guān)鍵字 typedef

關(guān)鍵字static?

?#define 定義常量和宏

?11.指針

?內(nèi)存

怎么取地址?

指針變量的大小

12.結(jié)構(gòu)體?

?后言?


1.什么是C語(yǔ)言?

C 語(yǔ)言是一門通用 計(jì)算機(jī)編程語(yǔ)言 ,廣泛應(yīng)用于底層開發(fā)。 C 語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式 編譯 、處理低級(jí) 存儲(chǔ)器 、產(chǎn)生少量的 機(jī)器碼 以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。
? ? ? ? 盡管C 語(yǔ)言提供了許多低級(jí)處理的功能,但仍然保持著良好跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫出的 C語(yǔ)言程序可在許多電腦平臺(tái)上進(jìn)行編譯,甚至包含一些嵌入式 處理器 (單片機(jī)或稱 MCU )以及超級(jí)電腦等作業(yè)平臺(tái)。
? ? ? ? 二十世紀(jì)八十年代,為了避免各開發(fā)廠商用的C 語(yǔ)言語(yǔ)法產(chǎn)生差異,由 美國(guó)國(guó)家標(biāo)準(zhǔn)局 為 C 語(yǔ)言制 定了一套完整的美國(guó)國(guó)家標(biāo)準(zhǔn)語(yǔ)法,稱為 ANSI C ,作為 C 語(yǔ)言最初的標(biāo)準(zhǔn)。 [1] 目前 2011 年 12 月 8 日,國(guó)際標(biāo)準(zhǔn)化組織(ISO )和國(guó)際電工委員會(huì)( IEC )發(fā)布的 C11 標(biāo)準(zhǔn) 是 C 語(yǔ)言的第三個(gè)官方標(biāo)準(zhǔn),也是C 語(yǔ)言的最新標(biāo)準(zhǔn),該標(biāo)準(zhǔn)更好的支持了漢字函數(shù)名和漢字標(biāo)識(shí)符,一定程度上實(shí)現(xiàn)了漢字編程。
? ? ? ? C語(yǔ)言是一門面向過程的計(jì)算機(jī)編程語(yǔ)言,與 C++ , Java 等面向?qū)ο?/strong>的編程語(yǔ)言有所不同。


2.C語(yǔ)言代碼的基本格式

#include <stdio.h>
int main()
{printf("Hello World!\n");return 0; 
}

運(yùn)行結(jié)果如下:

#include <stdio.h> :每一個(gè)C語(yǔ)言程序代碼都含有的一個(gè)頭文件,其中include 稱為文件包含命令,其意義是把尖括號(hào)<>或引號(hào)""內(nèi)指定的文件包含到本程序中,成為本程序的一部分。被包含的文件通常是由系統(tǒng)提供的,其擴(kuò)展名為.h,而stdio為standard input output的縮寫,意為“標(biāo)準(zhǔn)輸入輸出” ,在程序中為固定格式,輸入上去就行。

?int main():main函數(shù)是程序的入口 ,一個(gè)工程中main函數(shù)有且僅有一個(gè),是C語(yǔ)言main函數(shù)的一種聲明方式,在int main()下有一對(duì){},在其中輸入代碼。" { " 代表程序執(zhí)行的開始,“ } ”表示程序執(zhí)行的結(jié)束,可見main函數(shù)的重要性。

printf:表示要輸出的結(jié)果,其結(jié)果放入(" ?")中的雙引號(hào)內(nèi),如果需要特別打印某一種字符類型,一般格式為(“格式控制字符串”,輸出值參數(shù)表)。

return 0:返回值為0,先不做深入了解,記作固定的格式,打上去就行。

注:每一個(gè)語(yǔ)句后面需要打上一個(gè)英文狀態(tài)下的分號(hào)? ;?

C語(yǔ)言 printf 詳解


3.數(shù)據(jù)類型?

char?字符數(shù)據(jù)類型
short短整型
int整型
long長(zhǎng)整型
long long更長(zhǎng)的整形
float單精度浮點(diǎn)數(shù)
double雙精度浮點(diǎn)數(shù)

它們占用的空間大小是?

#include <stdio.h>
int main()
{printf("%d\n", sizeof(char));printf("%d\n", sizeof(short));printf("%d\n", sizeof(int));printf("%d\n", sizeof(long));printf("%d\n", sizeof(long long));printf("%d\n", sizeof(float));printf("%d\n", sizeof(double));printf("%d\n", sizeof(long double));return 0;
}?

代碼中%d意思是打印出來的數(shù)據(jù)是整型數(shù)據(jù),sizeof()用于打印數(shù)據(jù)類型的大小。??

其中數(shù)字大小表示各種數(shù)據(jù)類型的空間大小,單位為字節(jié)(byte)

1GB=1024MB
1MB=1024KB
1KB=1024byte
1byte=8bit

其中位:是二進(jìn)制數(shù)據(jù)中的一個(gè)位(bit)簡(jiǎn)寫為b,中譯為比特,是計(jì)算機(jī)存儲(chǔ)數(shù)據(jù)的最小單位

注意:存在這么多的類型,其實(shí)是為了更加豐富的表達(dá)生活中的各種值。
類型的使用:

char ch = 'w';
int weight = 120;
int salary = 20000;

4.變量、常量

常量:?不變的值,?C?語(yǔ)言中用?常量?的概念來表示,在生活中的有些值是不變的(比如:圓周率,性別,身份證號(hào)碼,血型等等)。

變量:?會(huì)變的值,?C?語(yǔ)言中用?變量?來表示(比如:年齡,體重,薪資)。

?4.1 定義變量的方法

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

4.2 變量的分類

  • 局部變量
  • 全局變量
#include <stdio.h>
int global = 2023;//全局變量
int main()
{int local = 2023;//局部變量//下面定義的global會(huì)不會(huì)有問題?int global = 2020;//局部變量printf("global = %d\n", global);return 0;
}

總結(jié):
上面的局部變量global變量的定義其實(shí)沒有什么問題的!
當(dāng)局部變量和全局變量同名的時(shí)候,局部變量?jī)?yōu)先使用。

4.3 變量的使用

#include <stdio.h>
int main()
{int num1 = 0;int num2 = 0;int sum = 0;printf("輸入兩個(gè)數(shù):>");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("sum = %d\n", sum);return 0;
}
  • 輸入用:scanf
  • 輸出用:printf

4.4 變量的作用域和生命周期?

  • 作用域

作用域(scope)是程序設(shè)計(jì)概念,通常來說,一段程序代碼中所用到的名字并不總是有效/可用的,而限定這個(gè)名字的可用性的代碼范圍就是這個(gè)名字的作用域。
1. 局部變量的作用域是變量所在的局部范圍。
2. 全局變量的作用域是整個(gè)工程。

通俗點(diǎn)來說:哪里可以使用這個(gè)變量,那里就是變量的作用域。

  • 生命周期

變量的生命周期指的是變量的創(chuàng)建到變量的銷毀之間的一個(gè)時(shí)間段
1.部變量的生命周期是:進(jìn)入作用域生命周期開始,出作用域生命周期結(jié)束。
2. 局變量的生命周期是:整個(gè)程序的生命周期。

4.5 常量

C語(yǔ)言中的常量和變量的定義的形式有所差異。
C語(yǔ)言中的常量分為以下以下幾種:
字面常量
const 修飾的常變量
#define 定義的標(biāo)識(shí)符常量
枚舉常量

#include <stdio.h>
enum Sex
{
MALE,
FEMALE,
SECRET
};
//括號(hào)中的MALE,FEMALE,SECRET是枚舉常量
int main()
{//字面常量演示3.14;//字面常量1000;//字面常量//const 修飾的常變量const float pu = 3.14f; ?//這里的pai是const修飾的常變量pu = 5.14;//是不能直接修改的!//#define的標(biāo)識(shí)符常量 演示#define MAX 100printf("max = %d\n", MAX);//枚舉常量演示printf("%d\n", MALE);printf("%d\n", FEMALE);printf("%d\n", SECRET);//注:枚舉常量的默認(rèn)是從0開始,依次向下遞增1的return 0;
}

注意:上面例子上的 pu?被稱為 const 修飾的常變量, const 修飾的常變量在C語(yǔ)言中只是在語(yǔ)法層面被限制了
變量 pu?不能直接被改變,但是 pu?本質(zhì)上還是一個(gè)變量的,所以叫常變量。


5.字符串+轉(zhuǎn)義字符+注釋

  • 字符串

這種由雙引號(hào)(Double Quote)引起來的一串字符稱為字符串字面值(String Literal),或者簡(jiǎn)稱字符串。?

"Hello World\n"

?注:字符串的結(jié)束標(biāo)志是一個(gè)“ \0 ” 的轉(zhuǎn)義字符。在計(jì)算字符串長(zhǎng)度的時(shí)候 \0 是結(jié)束標(biāo)志,不算作字符串內(nèi)容。

?下面代碼,打印結(jié)果是什么?為什么?(突出'\0'的重要性)

#include <stdio.h>
int main()
{char arr1[] = "good";char arr2[] = { 'g', 'o', 'o','d' };char arr3[] = { 'g', 'o', 'o','d','\0' };printf("%s\n", arr1);printf("%s\n", arr2);printf("%s\n", arr3);return 0;
}

運(yùn)行結(jié)果如下:

  • 第一個(gè)字符串放在數(shù)組里面時(shí),末尾會(huì)默認(rèn)輸入一個(gè) \0,其實(shí)放入的內(nèi)容有‘g’,‘o’,‘o’,‘d’,‘\0’,所以打印完good后就結(jié)束了。
  • 第二個(gè)每個(gè)字符單獨(dú)分開,末尾是不會(huì)默認(rèn)輸入\0 的,所以在打印完good以后并沒有結(jié)束打印,后面的直到遇到 \0 才結(jié)束。因此這種 \0 是具有隨機(jī)性的,寫法是不可取的。
  • 第三個(gè)相比第二個(gè),加了 \0,因此在打印完字符good后會(huì)直接遇到 \0,結(jié)束打印。

  • 轉(zhuǎn)義字符

假如我們要在屏幕上打印一個(gè)目錄: c:\code\test.c

像下面這樣寫嗎?

#include <stdio.h>
int main()
{printf("c:\code\test.c\n");return 0;
}

運(yùn)行結(jié)果如下:

其實(shí)上面里面的 \? \t? \n,都被當(dāng)成轉(zhuǎn)義字符了,轉(zhuǎn)義字符顧名思義就是轉(zhuǎn)變?cè)瓉淼囊馑肌2粫?huì)以原來的樣子輸出。

下面看看常見的轉(zhuǎn)義字符。

轉(zhuǎn)義字符釋義
\?在書寫連續(xù)多個(gè)問號(hào)時(shí)使用,防止他們被解析成三字母詞
\'用于表示字符常量'
\“用于表示一個(gè)字符串內(nèi)部的雙引號(hào)
\\用于表示一個(gè)反斜杠,防止它被解釋為一個(gè)轉(zhuǎn)義序列符
\a警告字符,蜂鳴
\b退格符
\f進(jìn)紙符
\n換行
\r回車
\t水平制表符
\v垂直制表符
\ddd?ddd表示1~3個(gè)八進(jìn)制的數(shù)字。 如: \130 X
\xdd?dd表示2個(gè)十六進(jìn)制數(shù)字。 如: \x30 0
  • 轉(zhuǎn)義字符 \? :在書寫連續(xù)多個(gè)問號(hào)時(shí)使用,為了防止他們被解析成三字母詞。一般老版本編譯器才會(huì)出現(xiàn)。如下代碼:

printf("Are you OK??\n");
printf("Are you OK\?\?");

?可見現(xiàn)在的編譯器效果一樣,所以不必?fù)?dān)心。

  • 轉(zhuǎn)義字符 \' 與 \" :想輸出單引號(hào)和雙引號(hào),必須用這種方式

printf(" \' ");
printf(" \" ");

如果直接打 ' 或者 " 上去會(huì)怎么樣?

?結(jié)果是 ’ 可以打印,"?直接報(bào)錯(cuò)了,因?yàn)榫幾g器不知道你想輸出的?" 和 前面還是后面的 "配對(duì),printf結(jié)構(gòu)錯(cuò)誤。

總結(jié):為了統(tǒng)一規(guī)范,我們一律用 \' 和 \"

  • ?轉(zhuǎn)義字符 \t :水平制表符,輸出結(jié)果相當(dāng)于一個(gè)按一次Tab健所拉開的距離

printf("A\ta");

可見兩個(gè)字母之間的間隔就是 \t 所拉開的一個(gè)Tab的距離

  • 轉(zhuǎn)義字符\ddd和\xdd:

  • ddd 表示 1~3個(gè)八進(jìn)制的數(shù)字。 如: \130 ,
  • dd 表示 2 個(gè)十六進(jìn)制數(shù)字。 如: \x30
printf("\101\n");
printf("\x42");

打印時(shí)輸出的是對(duì)應(yīng)表示的進(jìn)制轉(zhuǎn)化為十進(jìn)制后十進(jìn)制對(duì)應(yīng)ASCII碼表對(duì)應(yīng)的字符。

八進(jìn)制\101轉(zhuǎn)化為十進(jìn)制表示的數(shù)是65,對(duì)應(yīng)字母A

十六進(jìn)制\x42轉(zhuǎn)化為十進(jìn)制表示的數(shù)是66,對(duì)應(yīng)字母B

ASCLL表如下:

轉(zhuǎn)義字符 \\:

我們之前說到 \ 是一個(gè)轉(zhuǎn)義字符,會(huì)轉(zhuǎn)變?cè)瓉淼囊馑?。那兩條 \\ 用?\ 把轉(zhuǎn)義字符 \ 的意思轉(zhuǎn)成普通字符了唄。好理解吧,負(fù)負(fù)得正。

printf("\\");

可見,前面的 \ 把后面轉(zhuǎn)義字符 \ 轉(zhuǎn)化成普通字符\??

?轉(zhuǎn)義字符\a:

警告字符,蜂鳴。

打印的時(shí)候會(huì)響一聲“?!?/strong>

printf("\a");

轉(zhuǎn)義字符\b:退格符

printf("123456\b\b\b\b");

?\b表示向后退格,退到相應(yīng)位置時(shí),相應(yīng)的字符將無(wú)法打印,會(huì)具有疊加效果。

轉(zhuǎn)義字符\f:換頁(yè),將當(dāng)前位置移到下一頁(yè)的開頭,在使用打印機(jī)時(shí)會(huì)直接換頁(yè),在編譯器中表現(xiàn)不出來

轉(zhuǎn)義字符\v:垂直制表符,也用于打印時(shí)

轉(zhuǎn)義字符\r:回車,將當(dāng)前位置移到本行的開頭,并覆蓋打印


  • 注釋?

1. 代碼中有不需要的代碼可以直接刪除,也可以注釋掉
2. 代碼中有些代碼比較難懂,可以加一下注釋文字

#include <stdio.h>
int Add(int x, int y)
{return x+y;
}
/*C語(yǔ)言風(fēng)格注釋
int Sub(int x, int y)
{return x-y;
}
*/
int main()
{//C++注釋風(fēng)格//int a = 10;//調(diào)用Add函數(shù),完成加法printf("%d\n", Add(1, 2));return 0;
}

注釋有兩種風(fēng)格:

C語(yǔ)言風(fēng)格的注釋 /*xxxxxx*/

缺陷:不能嵌套注釋

C++風(fēng)格的注釋 //xxxxxxxx
可以注釋一行也可以注釋多行


?6.選擇語(yǔ)句

  • 在生活中,有著各種各樣的選擇,一旦選擇了一方,結(jié)果可能有所不同。
  • 在編程中,編程中也有選擇,編程無(wú)非也是為了更好的解決生活中的問題和不足,那既然如此,編程中的選擇無(wú)非就是抽象化的描述和解決現(xiàn)實(shí)問題。

?在C語(yǔ)言中,有著比較常用的兩種選擇語(yǔ)句

  • if-else
  • switch-case

if ?else

#include <stdio.h>
int main()
{int score = 0;scanf("%d", &score);if (score >= 90){printf("good");}else{printf("bad");}return 0;
}

看上面代碼,輸入了score的值,如果if(條件),條件是成立的(即score>=90),執(zhí)行if()后{}括號(hào)中的內(nèi)容。否則,執(zhí)行else后{}中的內(nèi)容。

當(dāng)然這是最簡(jiǎn)單的if-else用法,還有其他嵌套用法,將在詳解篇介紹。

switch case

從上面的例子可以看出,if-else的條件表示一段范圍,如果要表示一堆點(diǎn),if-else豈不是要寫一堆?關(guān)于多點(diǎn)選擇可以用對(duì)口的switch-case,它最擅長(zhǎng)對(duì)點(diǎn)進(jìn)行選擇??匆韵吕?。

#include <stdio.h>
int main()
{int day = 0;scanf("%d", &day);switch (day){case 1:case 2:case 3:case 4:case 5:printf("working day");break;case 6:case 7:printf("holiday");break;}return 0;
}

?

?

輸入今天是星期幾,如果是1-5就輸出working day,否則,如果輸入值是6-7,就輸出holiday。通過這個(gè)例子我相信你應(yīng)該對(duì)上面代碼有一定的理解了。至于break語(yǔ)句,當(dāng)前只需要知道在switch-case語(yǔ)句如果不寫break,就會(huì)繼續(xù)執(zhí)行下面語(yǔ)句。比如我輸入5 會(huì)輸出working day 和 holiday 。

沒理解也沒關(guān)系,后面詳解會(huì)一一講清楚。


7.循環(huán)語(yǔ)句

  • 在生活中,路肯定不是一番風(fēng)順的。往往是會(huì)經(jīng)歷到一定時(shí)間的循環(huán)輪回,但總會(huì)突破循環(huán),繼續(xù)前行。
  • 在編程中,編程中也有循環(huán),我們把生活中循環(huán)往復(fù)的事情,用C語(yǔ)言抽象化的表達(dá)和優(yōu)化,能幫助我們解決實(shí)際中的一些問題。

注意:循環(huán)一定要有出口,不能陷入死循環(huán)中,好比生活中,不可能因?yàn)橐患戮屯磺?/strong>

??在C語(yǔ)言中,有三種循環(huán)語(yǔ)句

  • while
  • do...while
  • for

while

?while(條件) { ... };

上面是一個(gè)while循環(huán)體。如果()中條件成立,則循環(huán)往復(fù)做{ }中的內(nèi)容,每做完一遍會(huì)回到()條件判斷,如果還成立就繼續(xù),如果不成立了,則不再執(zhí)行該while循環(huán)體,繼續(xù)執(zhí)行循環(huán)體下面的內(nèi)容。

#include <stdio.h>
int main()
{int i = 1;while (i <= 10){printf("%d ", i);i++;}return 0;
}

上面代碼實(shí)現(xiàn)了1-10的依次輸出。

  • 代碼邏輯:開始初始化 i = 1 ,判斷while循環(huán)條件 1 <= 10條件成立,進(jìn)入循環(huán),printf打印1,i++后 i = 2。再次進(jìn)入循環(huán)判斷 2 <= 10,再次進(jìn)入循環(huán),printf打印2,i++中 i=3.......直到?i>10 循環(huán)條件不成立了,結(jié)束循環(huán)體。

?do...while

?前面提到while循環(huán)是先判斷循環(huán)條件成立才會(huì)進(jìn)入循環(huán)。一旦不成立壓根就不會(huì)進(jìn)入循環(huán)。那有先進(jìn)入循環(huán)再判斷的循環(huán)體嗎?有的!do...while循環(huán)正合適。

#include <stdio.h>
int main()
{int i;do{printf("1. play \n");printf("2. exit \n");printf("select:>");scanf("%d", &i);} while (i);return 0;
}

?

不知道大家有沒有玩過 單機(jī)數(shù)碼游戲,在每次玩完后一把會(huì)詢問你是否再來一把,或者退出游戲。do...while循環(huán)設(shè)計(jì)正合適。

  • 代碼邏輯:通過上面代碼可以看到先是printf輸出了1.play 2.exit select:>說明了它已經(jīng)執(zhí)行循環(huán)體了,然后我們輸入i 的值如果結(jié)果為真(除了0以外的值),do...while(條件)成立,繼續(xù)執(zhí)行循環(huán)體,直到條件不成立退出循環(huán)。
  • 我們看看第二個(gè)運(yùn)行結(jié)果,我們直接輸入0,do...while(條件)為假(在C語(yǔ)言中數(shù)值0可以表示為條件不成立),直接結(jié)束了循環(huán)。
  • 與while循環(huán)的區(qū)別?:while循環(huán)是先判斷,如果成立就循環(huán),不成立就結(jié)束循環(huán)或不循環(huán)。do...while循環(huán)是先執(zhí)行循環(huán)體一次,后判斷條件,如果成立就循環(huán),不成立就結(jié)束循環(huán)或不循環(huán)。

for

for循環(huán)是C語(yǔ)言中最常用的循環(huán),因?yàn)樗Y(jié)構(gòu)清晰,便于優(yōu)化,更加推薦使用。

for語(yǔ)句的基本結(jié)構(gòu)

for(語(yǔ)句1 ; 語(yǔ)句2 ; 語(yǔ)句3)

{

? ? ? ? ......循環(huán)體

}

語(yǔ)句1一般用于初始化

語(yǔ)句2是條件判斷語(yǔ)句,即滿足這個(gè)條件就執(zhí)行循環(huán)體,不滿足時(shí)就退出循環(huán)。

語(yǔ)句3是一般用于控制循環(huán)的結(jié)束的一個(gè)條件

我們可以通過下面例子來了解。

#include <stdio.h>
int main()
{int i;for (i = 0; i < 10; i++){printf("%d ", i);}return 0;
}

以上代碼將0-9的數(shù)字依次輸出。

代碼邏輯:開始定義了一個(gè)變量i ,在for循環(huán)語(yǔ)句1時(shí)執(zhí)行了i=0,變量i得到初始化。語(yǔ)句2意思是當(dāng) i<10時(shí)就執(zhí)行循環(huán)體。語(yǔ)句3意思是沒執(zhí)行完循環(huán)體后執(zhí)行 i++ 。這樣循環(huán)往復(fù),直到 i=10 則 i<10這個(gè)條件不再成立了,就結(jié)束循環(huán)。

邏輯如下。

語(yǔ)句1-->語(yǔ)句2(成立)-->循環(huán)體-->語(yǔ)句3-->語(yǔ)句2(成立)-->循環(huán)體-->語(yǔ)句3-->......-->語(yǔ)句2(不成立)-->循環(huán)結(jié)束。


8.函數(shù)

函數(shù)分成兩類

  • 庫(kù)函數(shù)
  • 自定義函數(shù)?

庫(kù)函數(shù)?

庫(kù)函數(shù)是什么?

? ? ? ? 回顧之前用到的printf它就是一個(gè)庫(kù)函數(shù),它可以將內(nèi)容按照指定的格式輸出。它是憑空產(chǎn)生的嗎?不是!它無(wú)非也是人寫出來的一個(gè)函數(shù)。當(dāng)我們包含<stdio.h>這個(gè)頭文件時(shí),就可以調(diào)用它了,至于它函數(shù)內(nèi)部怎么實(shí)現(xiàn)我們不需要知道,我們需要用時(shí)調(diào)用它,以便于我們?nèi)粘5拈_發(fā)。這里是官網(wǎng),有需要可以去了解。
? ? ? ? C++官網(wǎng)(英文版): cppreference.com
? ? ? ? C++官網(wǎng)(中文版): cppreference.com
? ? ? ? 也可去: cplusplus.com - The C++ Resources Network
對(duì)庫(kù)函數(shù)簡(jiǎn)單的分類:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1. IO函數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.字符串操作函數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.字符操作函數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4.內(nèi)存操作函數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5.時(shí)間/日期函數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 6.數(shù)學(xué)函數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 7.其他庫(kù)函數(shù)

?:但是庫(kù)函數(shù)必須知道的一個(gè)秘密就是:使用庫(kù)函數(shù),必須包含?#include?對(duì)應(yīng)的頭文件。

自定義函數(shù)

如果庫(kù)函數(shù)能干所有的事情,那就不需要程序員了, 所以更加重要的是自定義函數(shù)自定義函數(shù)和庫(kù)函數(shù)一樣,有函數(shù)名,返回值類型和函數(shù)參數(shù)。所以,庫(kù)函數(shù)無(wú)非就是別人寫好的自定義函數(shù),?我們直接拿去用了。自定義函數(shù)都是由我們自己來設(shè)計(jì)。這給程序員一個(gè)很大的發(fā)揮空間。

看如下代碼

#include <stdio.h>
int main()
{int a, b, c;scanf("%d%d", &a, &b);c = a + b;printf("%d\n", c);return 0;
}

上面代碼將輸入的a和b的值相加。

但有個(gè)問題,我們?nèi)绻朐佥斎朐傧嗉油贻敵?#xff0c;是不是把這個(gè)段代碼復(fù)制一遍也能實(shí)現(xiàn)。

#include <stdio.h>
int main()
{int a, b, c;scanf("%d%d", &a, &b);c = a + b;printf("%d\n", c);scanf("%d%d", &a, &b);c = a + b;printf("%d\n", c);return 0;
}

看代碼和運(yùn)行結(jié)果也是可行的。但是會(huì)不會(huì)感覺代碼很亂啊?我們新手可能還沒接觸上千上萬(wàn)行代碼,或許沒感覺到亂。事實(shí)上,代碼復(fù)用是不好的,未來可能重復(fù)做的一件事,我們會(huì)封裝成函數(shù),需要時(shí)調(diào)用一下就好,不需要每次都寫一遍。這樣可以了解到函數(shù)的魅力嗎?

我們可以知道上面重復(fù)做的事是兩個(gè)數(shù)的加法,并輸出。我們用一個(gè)函數(shù)封裝試試。

#include <stdio.h>
void add()
{int a, b, c;scanf("%d%d", &a, &b);c = a + b;printf("%d\n", c);
}
int main()
{add();add();return 0;
}

我們把兩數(shù)相加,并輸出。當(dāng)成一個(gè)整體,封裝成一個(gè)函數(shù)。在主調(diào)函數(shù)main中,用add();函數(shù)調(diào)用語(yǔ)句就可以調(diào)用這個(gè)add被調(diào)函數(shù)了,不需要再寫一遍。好比printf函數(shù)我們只需要按照它執(zhí)行的方式調(diào)用它,我們就可以實(shí)現(xiàn)內(nèi)容的輸出。也不需要知道它函數(shù)內(nèi)部是怎么寫的。這大大減少我們的代碼復(fù)用問題,使代碼更加結(jié)構(gòu)化。一個(gè)函數(shù)一個(gè)功能,相互之間,在有需要時(shí),按照規(guī)則,正確調(diào)用,使代碼更加清晰。


9.數(shù)組

數(shù)組的定義

如果要存儲(chǔ)1-10的整型數(shù)字,怎么存儲(chǔ)?

我們知道 int 類型可以存儲(chǔ)一個(gè)整型數(shù)據(jù),那10個(gè)就寫10個(gè)咯?

如果要100甚至是1000個(gè)呢?一個(gè)個(gè)定義嗎?
C語(yǔ)言中給了數(shù)組的定義:一組相同類型元素的集合,即數(shù)組。

int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定義一個(gè)整形數(shù)組,最多放10個(gè)元素

上面定義了一個(gè)名為 arr 的的數(shù)組,

每個(gè)元素的類型是 int 型,

數(shù)組的大小是10個(gè)元素,

每個(gè)元素依次被初始化為1-10

數(shù)組的下標(biāo)

上面我們定義了一個(gè)數(shù)組,那怎么使用它呢?

C語(yǔ)言規(guī)定:數(shù)組的每個(gè)元素都有一個(gè)下標(biāo),下標(biāo)是從0開始的。
數(shù)組可以通過下標(biāo)來訪問的

如下:

  • 如果我們要訪問數(shù)字7,即用arr[6]。如果訪問數(shù)字9呢?即用arr[8]。
  • 在調(diào)用時(shí)【】中的內(nèi)容時(shí)只數(shù)組中的第幾個(gè)元素,但要注意的時(shí)下標(biāo)從0開始。比如你要訪問第一個(gè)元素,你要寫arr[0],才對(duì)。

數(shù)組的使用

如果我們要訪問數(shù)組中多個(gè)元素,我們一般用循環(huán)來訪問,如下。

#include <stdio.h>
int main()
{int i;int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };for (i = 0; i < 10; i++){printf("%d\n", arr[i]);}return 0;
}

?

?我們用for循環(huán),i來控制訪問時(shí)數(shù)組的下標(biāo),i從0開始++到i=9,數(shù)組數(shù)組小標(biāo)0-9的內(nèi)容。i=10時(shí)退出循環(huán)。


操作符

算術(shù)操作符+???????? -???????? *???????? /???????? %
移位操作符>> ????????<<
位操作符&???????? ^???????? |
賦值操作符=???????? +=???????? -= ????????*=???????? /= ????????&= ????????^= ????????|= ????????>>= ????????<<=
單目操作符! ?????邏輯反操作
- ?????負(fù)值
+ ?????正值
& ?????取地址
sizeof ???操作數(shù)的類型長(zhǎng)度(以字節(jié)為單位)
~ ?????對(duì)一個(gè)數(shù)的二進(jìn)制按位取反
-- ?????前置、后置--
++ ?????前置、后置++
* ?????間接訪問操作符(解引用操作符)
(類型) ???強(qiáng)制類型轉(zhuǎn)換
關(guān)系操作符>
>=
<
<=
!= ?用于測(cè)試“不相等”
== ???用于測(cè)試“相等”
邏輯操作符&& ??邏輯與
|| ?????邏輯或
條件操作符exp1 ? exp2 : exp3
逗號(hào)表達(dá)式exp1, exp2, exp3, …expN
下標(biāo)引用、函數(shù)調(diào)用和結(jié)構(gòu)成員[] ????????()???????? .? ? ? ? ?->

這里總結(jié)了C語(yǔ)言中較全的操作符,簡(jiǎn)單的將其分類先,先不做多詳解。?


?10.常見關(guān)鍵字

?auto ?????????break ?????????case ?????????char ?????????const ?????????continue ?????????default ?????????do ?double ????????else ?????????num?????????extern???????? float ?????????for ?????????goto ?????????if ?????????int ?long ?????????register ??????return ??????short ?????????signed??????sizeof ?????????static ????????struct ?switch ?????typedef ????????union? ? ?unsigned? ? ? void ???????volatile ?????????while

C語(yǔ)言提供了豐富的關(guān)鍵字,這些關(guān)鍵字都是語(yǔ)言本身預(yù)先設(shè)定好的,用戶自己是不能創(chuàng)造關(guān)鍵字的。
注:關(guān)鍵字,先介紹下面幾個(gè),后期詳解會(huì)講。

關(guān)鍵字 typedef

?typedef 顧名思義是類型定義,這里應(yīng)該理解為類型重命名

//將unsigned int 重命名為uint, 所以u(píng)int也是一個(gè)類型名
typedef unsigned int uint;
int main()
{//觀察num1和num2,這兩個(gè)變量的類型是一樣的unsigned int num1 = 0;uint num2 = 0;return 0;
}

關(guān)鍵字static?

?【C語(yǔ)言】static關(guān)鍵字詳解_Anmia.的博客-CSDN博客

?#define 定義常量和宏

//define定義標(biāo)識(shí)符常量
#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;
}

?11.指針

?內(nèi)存

?內(nèi)存是電腦上特別重要的存儲(chǔ)器,計(jì)算機(jī)中程序的運(yùn)行都是在內(nèi)存中進(jìn)行的 。
所以為了有效的使用內(nèi)存,就把內(nèi)存劃分成一個(gè)個(gè)小的內(nèi)存單元,每個(gè)內(nèi)存單元的大小是1個(gè)字節(jié)。
為了能夠有效的訪問到內(nèi)存的每個(gè)單元,就給內(nèi)存單元進(jìn)行了編號(hào),這些編號(hào)被稱為該內(nèi)存單元的地
址。

變量是創(chuàng)建內(nèi)存中的(在內(nèi)存中分配空間的),每個(gè)內(nèi)存單元都有地址,所以變量也是有地址的。?

怎么取地址?

#include <stdio.h>
int main()
{int num = 10;&num;//取出num的地址//注:這里num的4個(gè)字節(jié),每個(gè)字節(jié)都有地址,取出的是第一個(gè)字節(jié)的地址(較小的地址)printf("%p\n", &num);//打印地址,%p是以地址的形式打印return 0;
}

?

?那地址如何存儲(chǔ),需要定義指針變量。

#include <stdio.h>
int main()
{int num = 10;int *p = &num;*p = 20;return 0;
}

以整形指針舉例,可以推廣到其他類型,如

#include <stdio.h>
int main()
{char ch = 'w';char* pc = &ch;*pc = 'q';printf("%c\n", ch);return 0;
}

指針變量的大小

#include <stdio.h>
//指針變量的大小取決于地址的大小
//32位平臺(tái)下地址是32個(gè)bit位(即4個(gè)字節(jié))
//64位平臺(tái)下地址是64個(gè)bit位(即8個(gè)字節(jié))
int main()
{printf("%d\n", sizeof(char *));printf("%d\n", sizeof(short *));printf("%d\n", sizeof(int *));printf("%d\n", sizeof(double *));return 0;
}

32位? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 64位

那每個(gè)類型的指針大小一樣,為什么要分類型呢?類型不同,表示你指向的類型不同,用不同與指向類型的指針會(huì)發(fā)生一系列錯(cuò)誤,這些后面會(huì)講,指針是C語(yǔ)言比較重要的內(nèi)容,要對(duì)其認(rèn)真深入學(xué)習(xí)。


12.結(jié)構(gòu)體?

?結(jié)構(gòu)體也是一種數(shù)據(jù)結(jié)構(gòu),但它是復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。對(duì)比之前的int float ......它們只能表達(dá)一種數(shù)據(jù),如果要表達(dá)一個(gè)學(xué)生呢?學(xué)生有姓名,學(xué)號(hào),年齡等信息又如何表示呢?

struct Student
{char name[20];//名字int age; ???//年齡char sex[5]; ?//性別char id[15]; //學(xué)號(hào)
};

?我們定義了一個(gè)名為Student的結(jié)構(gòu)體類型數(shù)據(jù),它包含了name,age,sex,id幾個(gè)不同的數(shù)據(jù),它們用不同的類型表示。

#include <stdio.h>
struct Student
{char name[20];int age; char sex[5];char id[15];
};
int main()
{struct Student s = { "張三", 20, "男", "20230101" };//.為結(jié)構(gòu)成員訪問操作符printf("name = %s\nage = %d\nsex = %s\nid = %s\n", s.name, s.age, s.sex, s.id);//->操作符struct Student* ps = &s;printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps -> id);return 0;
}

?可見通過 . 或者 指針 ->都可以訪問結(jié)構(gòu)體中的成員。


?后言

?本篇,簡(jiǎn)單的點(diǎn)了一下C語(yǔ)言中大部分基礎(chǔ)而重要的內(nèi)容,不做多的詳解,主要是面向新手,可以對(duì)C語(yǔ)言有個(gè)整體的框架認(rèn)識(shí),對(duì)后面學(xué)習(xí)可以起到一定的理解幫助。希望可以得到支持,后面會(huì)持續(xù)輸出各項(xiàng)詳解。

http://www.risenshineclean.com/news/4016.html

相關(guān)文章:

  • 怎么免費(fèi)搭建屬于自己的網(wǎng)站百度指數(shù)的搜索指數(shù)代表什么
  • wordpress pixvideoseo推廣外包報(bào)價(jià)表
  • 淘客怎么樣做網(wǎng)站谷歌推廣app
  • 網(wǎng)站建設(shè)職業(yè)規(guī)劃網(wǎng)頁(yè)設(shè)計(jì)教程
  • 外國(guó)做愛視頻網(wǎng)站網(wǎng)上銷售渠道
  • WordPress 插件修改界面seo 公司
  • 佛山外貿(mào)網(wǎng)站建設(shè)企業(yè)網(wǎng)站設(shè)計(jì)與實(shí)現(xiàn)論文
  • 用KEGG網(wǎng)站做通路富集分析谷歌搜索為什么用不了
  • 淮安網(wǎng)站建設(shè)價(jià)格網(wǎng)絡(luò)廣告營(yíng)銷案例
  • 深圳網(wǎng)絡(luò)科技公司大全網(wǎng)站seo是什么意思
  • 教人做衣服得網(wǎng)站有哪些純手工seo公司
  • 網(wǎng)站注冊(cè)流程推廣渠道有哪些方式
  • 攝影網(wǎng)站建設(shè)內(nèi)容品牌推廣的概念
  • 市建設(shè)局網(wǎng)站的綜合業(yè)務(wù)管理平臺(tái)網(wǎng)站seo入門基礎(chǔ)教程
  • 怎么做游戲充值代理網(wǎng)站百度指數(shù)代表什么
  • ubuntu下做網(wǎng)站百度seo入駐
  • 網(wǎng)站建設(shè)需要的一些技術(shù)最新新聞實(shí)時(shí)新聞
  • 簡(jiǎn)單網(wǎng)站制作成品推廣普通話的宣傳語(yǔ)
  • 南寧網(wǎng)站推廣v1武漢seo公司
  • 彩票做的最好是個(gè)網(wǎng)站好企業(yè)全網(wǎng)推廣
  • 冠縣網(wǎng)站建設(shè)做百度推廣需要什么條件
  • 深圳小企業(yè)網(wǎng)站建設(shè)設(shè)計(jì)制作seo 推廣服務(wù)
  • 長(zhǎng)安網(wǎng)站建設(shè)百度官網(wǎng)首頁(yè)登錄入口
  • minify wordpressseo信息優(yōu)化
  • 廣州網(wǎng)站制作怎么選百度網(wǎng)站怎么做
  • 吉林沈陽(yáng)網(wǎng)站建設(shè)手機(jī)網(wǎng)站模板建站
  • 不會(huì)代碼可以做網(wǎng)站維護(hù)嗎quark搜索引擎入口
  • 網(wǎng)站刷流量對(duì)網(wǎng)站有影響嗎推廣之家官網(wǎng)
  • 維護(hù)一個(gè)網(wǎng)站的費(fèi)用美國(guó)疫情最新消息
  • 小學(xué)網(wǎng)站建設(shè)方案書seo網(wǎng)絡(luò)推廣怎么做