# include & ltstdio.h & gt
int main()
{
printf("Hello World!");
返回0;
}
2.數據類型
數據類型:
1.基本數據類型:
1.1.整數:int 4字節。
1.2.字符類型:char 1字節。
1.3.實數類型(浮點類型)
1.3.1.單精度類型:浮點4字節。
1.3.2.Double類型:雙8字節。
2.結構類型:
2.1.枚舉類型
2.2.數組類型
2.3.結構類型
2.4.***用戶類型
3.指針類型:
4.空類型:
3.打印格式語句
%d:十進制整數;
%c:單個字符;
%s:字符串;
%f:6位小數;
# include & ltstdio.h & gt
int main()
{
int age = 18;
浮動高度= 1.85;
char unit = ' m
Printf("小明今年%d歲\n ",年齡);
Printf("小明的身高%f%c\n ",身高,單位);
Printf("小明在海量開放網絡課程在線學習IT技術\ n ");
返回0;
}
學好C++是進大廠的敲門磚!如果我有這個類,我的C++就不會這樣了。
已經過期?
4.常數
其值不變的量成為常數;
定義壹個字符常量(註意沒有後面;)
# include & ltstdio.h & gt
#define POCKETMONEY 10 //定義常數和常數值。
int main()
{
Printf("小明今天又得到了%d零花錢\n ",pocket money
返回0;
}
5.經營者
5.1.算術運算符:+、-、*、/、%、++、-;++/-之前,先運算,後取值。++/,先值後運算;
5.2.賦值運算符:
5.3.關系運算符;
5.4.邏輯運算符;
5.5.三方運營商:
表達式1?表情2:表情3;
6.水仙花數量的計算
輸出所有三位數水仙花號。
所謂“水仙花數”是指壹個三位數,其位數的立方和等於這個數。比如153是水仙花號,111+555+333。
# include & ltstdio.h & gt
int main()
{
//定義三位數num,壹位數sd,十位數td,百位數hd。
int num,sd,td,HD;
//循環所有三個數字
for(num = 100;num & lt1000 ;num++)
{
//獲取三位數num的第壹百位數字
HD = num/100;
//獲取三位數num的第十位數字。
TD = num/10% 10;
//獲取三位數的num位上的數字
SD = num % 10;
//水仙花的數量有什麽條件?
if(num = = HD * HD * HD+TD * TD * TD+SD * SD * SD)
{
Printf("水仙花號:%d\n ",num);
}
}
返回0;
}
7.打印正三角形*
# include & ltstdio.h & gt
int main()
{
int i,j,k;
for(I = 1;我& lt5;i++)
{
/*觀察每行的空格數,完成循環條件*/
for(j = I;j & lt5 ;j++)
{
printf(" ");//輸出空格
}
/*觀察每行中*的數量,並完成循環條件*/
for(k = 0;k & lt2 * I-1;k++)
{
printf(" * ");//每行輸出的*號
}
printf(" \ n ");//每次都在循環中換行
}
返回0;
}
8.臭名昭著的goto語句
很少使用
# include & ltstdio.h & gt
int main()
{
int sum = 0;
int I;
for(I = 1;我& lt=10;i++)
{
printf("%d\n ",I);
if(i==3){
轉到循環;//滿足條件時執行goto語句。
}
}
//執行goto
LOOP:printf(" for循環結束...");//請選擇適當的位置添加標識符。
返回0;
}
9.實參數的正式參與
形參:形參是定義函數名和函數體時使用的參數,用來接收調用函數時傳入的參數;
Argument: Argument是調用時傳遞的函數的參數。
函數的形參和實參具有以下特征:
參數僅在被調用時分配內存單元,並在調用結束時釋放分配的內存單元。因此,形參只在函數內部有效。函數調用結束返回到主音函數後,參數變量就不能再用了。
參數可以是常量、變量、表達式、函數等。無論是哪種量,在進行函數調用時都必須有確定的值,以便將這些值傳遞給形參。所以要事先用賦值等方法,得到實參數的確定值。
傳遞參數時,實參和形參在數量、類型、順序上要嚴格壹致,否則會出現類型不匹配的錯誤。
10.函數返回值的註釋
註意:void函數可以有執行代碼塊,但是不能有返回值。另外,如果void函數中有return語句,只能結束函數。其格式為:返回;
11.遞歸
# include & ltstdio.h & gt
Int getPeachNumber(int n) //在這裏定義n,否則編譯器會報錯!
{
int num
如果(n==10)
{
返回1;
}
其他
{
num =(getPeachNumber(n+1)+1)* 2;
Printf ("%d個桃子在第%d天剩余\n ",n,num);
}
退貨數量;
}
int main()
{
int num = getPeachNumber(1);
Printf("猴子在第壹天摘了%d個桃子。\n ",編號);
返回0;
}
12.可變存儲類別!
12.1.生命周期分割存儲模式
根據變量的生命周期,C語言可以分為靜態存儲和動態存儲。
靜態存儲模式:指程序運行時分配固定存儲空間的模式。靜態存儲區存儲的是整個程序執行過程中存在的變量,比如全局變量。
動態存儲模式:指在程序運行過程中,根據需要動態分配存儲空間的模式。存儲在動態存儲區的變量是根據程序運行的需要而建立和釋放的,通常包括:函數參數;自動變量;調用函數時的現場保護和返回地址。
12.2.存儲類型劃分
C語言中有四類存儲:自動、靜態、寄存器和外部。
由關鍵字auto定義的變量是自動變量,可以省略auto。如果沒有寫auto,則隱式定義為“自動存儲類別”,屬於動態存儲模式。
用static修飾的是靜態變量。如果它是在函數內部定義的,則稱為靜態局部變量。如果在函數之外定義,則稱為靜態外部變量。
註意:靜態局部變量屬於靜態存儲的範疇,分配在靜態存儲區的存儲單元在程序整個運行期間不會被釋放;靜態局部變量在編譯時被賦予初始值,也就是說,它們只被賦予壹次初始值;如果在定義局部變量時沒有賦值初始值,那麽對於靜態局部變量,初始值會在編譯時自動賦值為0(對於數值變量)或空字符(對於字符變量)。
為了提高效率,C語言允許將局部變量的值放在CPU中的寄存器中,稱為“寄存器變量”,用關鍵字register聲明。
註意:只有局部自動變量和形參可以作為寄存器變量;計算機系統中寄存器的數量是有限的,所以不可能定義任何數量的寄存器變量。局部靜態變量不能定義為寄存器變量。
用extern聲明的變量是外部變量,外部變量的意義是函數可以調用在函數之後定義的變量。
# includ & ltstdio.h & gt
//來源微信官方賬號:C語言與CPP編程
int main()
{
//定義外部局部變量
外部整數x;
返回0;
}
int x = 100;
13.內部函數外部函數!
C語言中不能被其他源文件調用的函數稱為內部函數,內部函數由靜態關鍵字定義,所以也稱為靜態函數,形式為:
靜態[數據類型]函數名([參數])
這裏的Static是對函數作用域的限制,只能在所在的源文件中使用,所以相同函數名的內部函數出現在不同的文件中是沒有問題的。
在C語言中,可以被其他源文件調用的函數稱為外部函數,它們由extern關鍵字以如下形式定義:
外部[數據類型]函數名([參數])
c語言規定,當沒有指定函數的作用域時,系統會默認認為是外部函數,所以需要定義外部函數時也可以省略extern。可以省略Extern14.數組數組:具有固定大小和壹致數據類型的連續內存空間。數組的聲明:數據類型數組名稱[長度n]
數據類型數組名稱[長度n]= {元素1,元素2,元素3,...};
數據類型數組名稱[]= {元素1,元素2,元素3,...};
數字類類型數組名[長度n];數組名[0] =元素1;數組名[1] =元素2;.....註意:1和數組的下標都以0開頭;2.初始化數組時,數組中元素的個數不能大於聲明的數組長度;3.如果采用第壹種初始化方法,當元素個數小於數組長度時,將冗余數組元素初始化為0;4.當數組聲明後未初始化時,static和extern類型的數組元素初始化元素為0,auto類型的數組元素初始化值不確定。
15.數組遍歷
# include & ltstdio.h & gt
int main()
{
int arr[] = {0,1,2,3,4,5,6,7,8,9 };
int I;
for(I = 0;我& lt10;i++)
{
printf("%d\n ",arr[I]);
}
返回0;
}
數組的冒泡排序
冒泡排序的思想:將相鄰的元素相互比較,將較大的數字放在後面,直到所有的數字都排序完畢。
字符串和數組
在C語言中,沒有辦法直接定義substring的數據類型。您需要使用壹個數組來定義所需的字符串,格式如下:
char string name[length]= " string content ";
字符字符串名稱[長度] = { '字符串1 ','字符串2 ',...,'字符串n ',' \ 0 ' };
註意:
[]中的長度可以省略;
第二種方式,最後壹個元素必須是' \0 ',表示結束;
第二種方式不會寫中文!;輸出字符串時,使用:printf("%s ",字符數組名);或puts(字符數組名);
16.串函數
Strlen(s):獲取字符串的長度s;
Strcmp(s1,s2):比較字符串;比較時,字符串會被轉換成ASCII碼,然後進行比較。返回結果為0,表示s1和s2的ASCII碼值相等。返回結果為1,表示s1大於s2的ASCII碼,返回結果為-1,表示s 1小於s2的ACSII碼。
Strcpy(s1,s2):字符串復制;S2將替換s1中的內容;
Strcat(s1,s2)拼接s1後面的S2;註意:s1的長度應該夠了!
Atoi(s1)將字符串轉換為整數!
17.多維數組
數據類型數組名稱[常量表達式1]...[常量表達式n];
多維數組的初始化和壹維數組類似,有兩種:
數據類型數組名稱[常量表達式1][常量表達式2]...[常量表達式n] = {{值1,...,值n},{值1,...值n},...,{值1,...,值。
數據類型數組名稱[常量表達式1][常量表達式2]...[常量表達式n];數組名[下標1][下標2]...[下標n] =值;
多維數組初始化應註意以下事項:
當采用第壹次初始化時,數組聲明必須指定列的維度。因為系統會根據數組中的元素總數來分配空間,所以當元素總數和列的維數已知時,會直接計算出行程的維數;
使用第二次初始化時,數組聲明必須指定行和列的維度。
18.多維數組的遍歷
使用嵌套循環
註意:多維數組的每個壹維下標不能越界!
19.結構
數組允許妳定義可以存儲相同類型數據項的變量。結構是C編程中另壹種用戶定義的可用數據類型,它允許您存儲不同類型的數據項。
結構用於表示壹條記錄。假設您想要跟蹤圖書館中圖書的動態,您可能需要跟蹤每本書的以下屬性:
標題
作者
科目
圖書ID
定義結構
為了定義結構,必須使用struct語句。struct語句定義了壹個具有多個成員的新數據類型。struct語句的格式如下:
結構標記{
成員列表
成員列表
會員名單?
...
}變量-列表;
標記是壹個結構標記。
Member-list是標準的變量定義,比如int I;或者其他有效的變量定義。
變量列表結構變量定義在結構的末尾,在最後壹個分號之前,可以指定壹個或多個結構變量。以下是圖書結構的申報方式:
結構書
{
夏爾?標題[50];
夏爾?作者[50];
夏爾?主題[100];
int?book _ id
}書;
在正常情況下,必須至少有兩個標記,成員列表和變量列表部分。以下是壹些例子:
//此聲明聲明了壹個具有三個成員的結構,即壹個整數A、壹個字符B和壹個雙精度c。
//同時聲明結構變量s1。
//此結構未標記。
結構體
{
int a;
char b;
雙c;
} s 1;
//此聲明聲明了壹個具有三個成員的結構,即壹個整數A、壹個字符B和壹個雙精度c。
//結構的標記名為SIMPLE,沒有聲明變量。
簡單結構
{
int a;
char b;
雙c;
};
//標記為SIMPLE的結構,並且聲明了變量t1、t2和t3。
struct SIMPLE t1,t2[20],* t3
//也可以用typedef創建新類型。
typedef結構
{
int a;
char b;
雙c;
} Simple2
//現在可以用Simple2作為類型聲明新的結構變量。
Simple2 u1,u2[20],* u3
訪問結構成員
為了訪問壹個結構的成員,我們使用成員訪問操作符(。).成員訪問操作符是結構變量名稱和我們要訪問的結構成員之間的句點。可以使用struct關鍵字定義結構類型的變量。下面的示例演示了結構的用法:
# include & ltstdio.h & gt
# include & ltstring.h & gt
//來源微信官方賬號:C語言與CPP編程
結構書
{
夏爾?標題[50];
夏爾?作者[50];
夏爾?主題[100];
int?book _ id
};
int main()
{
結構書book 1;/*申報圖書1,圖書類型*/
結構書第二冊;/*聲明Book2,屬於Books類型*/
/* Book1詳細信息*/
strcpy( Book1.title,《C編程》);
strcpy( Book1.author,“努哈阿裏”);
strcpy( Book1.subject,《C編程教程》);
book 1 . book _ id = 6495407;
/*第二冊詳細信息*/
strcpy( Book2.title,“電信計費”);
strcpy( Book2.author,“Zara Ali”);
strcpy( Book2.subject,《電信計費教程》);
Book2.book _ id = 6495700
/*輸出圖書1信息*/
printf( "Book 1 title : %s\n ",Book 1 . title);
printf( "Book 1 author : %s\n ",Book 1 . author);
printf(" Book 1 subject:% s \ n ",Book 1 . subject);
printf(" Book 1 Book _ id:% d \ n ",Book 1 . Book _ id);
/*輸出第二冊信息*/
printf("第二本書標題:%s\n ",book2 . title);
printf("第二本書作者:%s\n ",book2 . author);
printf( "Book 2 subject : %s\n ",book2 . subject);
printf( "Book 2 book_id : %d\n ",Book 2 . Book _ id);
返回0;
}
學好C++是進大廠的敲門磚!如果我有這個類,我的C++就不會這樣了。
已經過期?
20.***動詞
* * *對象是壹種特殊的數據類型,它允許您在同壹內存位置存儲不同的數據類型。您可以定義壹個包含多個成員的* * *主題,但任何時候都只能有壹個成員有值。* * *主體提供了使用相同內存位置的有效方法。
# include & ltstdio.h & gt
# include & ltstring.h & gt
聯合數據
{
int I;
浮動f;
夏爾?str[20];
};
int main()
{
union Data數據;
printf("數據占用的內存大小:%d\n ",sizeof(data));
返回0;
}
21.指針
# include & ltstdio.h & gt
int main()
{
int?var = 20?/*實際變量的聲明*/
int?* ip/*指針變量的聲明*/
ip = & ampvar?/*在指針變量中存儲變量的地址*/
printf(" var變量的地址:%p\n ",& ampvar?);
/*指針變量中存儲的地址*/
printf(" IP變量中存儲的地址:%p\n ",IP);
/*使用指針訪問值*/
printf(" * IP變量的值:%d\n ",* IP);
返回0;
}
22.文件讀寫
寫文件
# include & ltstdio.h & gt
int main()
{
FILE * fp = NULL
fp = fopen("/tmp/test.txt "," w+");
fprintf(fp,"這是對fprintf的測試...\ n ");
fputs("這是對fputs的測試...\n”,FP);
fclose(FP);
}
讀取文件
# include & ltstdio.h & gt
int main()
{
FILE * fp = NULL
char buff[255];
fp = fopen("/tmp/test.txt "," r ");
fscanf(fp," %s ",buff);
printf("1: %s\n ",buff);
fgets(buff,255,(FILE *)FP);
printf("2: %s\n ",buff);
fgets(buff,255,(FILE *)FP);
printf("3: %s\n ",buff);
fclose(FP);
}
C語言與C++學習路線
23.分類算法
十大經典排序算法(動態演示+代碼)
24.搜索算法
九種搜索算法
面試知識
C語言與C++面試知識總結
26.字處理
字符串操作的全面總結
27.?C語言通用標準庫解讀
C語言通用標準庫解讀
28.C語言中最常用的貪婪算法
C語言中最常用的貪婪算法就這樣被攻克了。
29.常見的C語言記憶錯誤及對策
C語言中常見的內存錯誤及其對策
30.c語言實現了面向對象的原則。
c語言實現了面向對象的原則。
31.C語言/C++內存管理
看完這篇文章妳還能理解C語言/C++內存管理嗎?
32.再談C語言指針
再來說說指針:大哥給妳掃清C指針的雲。
c語言函數指針的回調函數
C語言指針詳解(文末福利)
33.c語言預處理命令
長文本詳解:C語言預處理命令
34.C語言的高效編程和代碼優化
C語言的高效編程和代碼優化
35.c語言結構
C語言的結構就這樣被攻克了!值得收藏!
36.原碼,補碼,補碼詳解
原碼,補碼,補碼詳解
37.c語言宏定義
淺談C語言中宏定義的使用
38.* * *在C語言中使用聯合、枚舉和大小端模式。
C語言中* * *的並集、枚舉和大小端模式