速寫C語言3
主要內(nèi)容:
函數(shù)
數(shù)組
指針
對文件的操作
亂七八糟的知識
不建議看下去。。。寫的亂七八糟
1.函數(shù)
什么是函數(shù)呢?
函數(shù)就是一段封裝好的,可以重復使用的代碼,它使得我們的程序更加模塊化,不需要編寫大量重復的代碼。
被調(diào)用函數(shù)
當返回值是void類型時可以不用return語句
return語句可以有多條。只不過函數(shù)運行的時候,最后只會執(zhí)行其中的一條。
函數(shù)有返回值,那么函數(shù)就要返回其聲明類型的值,所以應該有return語句返回相應的值,否則編譯出差。
形參(形式參數(shù))
在函數(shù)定義中出現(xiàn)的參數(shù)可以看做是一個占位符,它沒有數(shù)據(jù),只能等到函數(shù)被調(diào)用時接收傳遞進來的數(shù)據(jù),所以稱為形式參數(shù),簡稱形參。
實參(實際參數(shù))
函數(shù)被調(diào)用時給出的參數(shù)包含了實實在在的數(shù)據(jù),會被函數(shù)內(nèi)部的代碼使用,所以稱為實際參數(shù),簡稱實參。
形參和實參的功能是傳遞數(shù)據(jù),發(fā)生函數(shù)調(diào)用時,實參的值會傳遞給形參。

PS:寫不下去了。。。
參考鏈接:https://www.runoob.com/cprogramming/c-functions.html
2.數(shù)組
http://c.biancheng.net/view/1829.html

定義數(shù)組
類型 變量名稱 [元素數(shù)量];
元素數(shù)量必須是整數(shù),具有相同的類型
一旦創(chuàng)建,不能改變大小
數(shù)組中的元素在內(nèi)存中是連續(xù)依次排列的
(數(shù)組是一個整體,它的內(nèi)存是連續(xù)的;也就是說,數(shù)組元素之間是相互挨著的,彼此之間沒有一點點縫隙。)

數(shù)組的每個單元就是數(shù)組類型的一個變量
使用數(shù)組時放在[]中的數(shù)字叫做下標或索引,下標從0開始計數(shù):
grades[0]
最大的下標就是,數(shù)組的大小-1。
長度為0的數(shù)組, int a[0]; ?可以存在但是沒有用。
數(shù)組的集成初始化
int [] = {1,2,3,4,5};
int [12] = {2};
后面不寫的話,就是初始化為0。
int a[12] = {[1] =2,4,[5]=6};
數(shù)組的大小
sizeof() ? 單位是字節(jié)

得出數(shù)組的單元個數(shù)。
?。。?/span>

%-9d中 width 對應 9。
對于整數(shù)和小數(shù),默認右對齊,不足的寬度以空格補齊,例如:
printf("%10d%12f", 234, 9.8);
輸出結(jié)果為:
234 ? ?9.800000
234 前面共有7個空格,9.8 前面有4個空格。
數(shù)組的賦值
數(shù)組變量本身不能被賦值,要把一個數(shù)組的所有元素交給另一個數(shù)組,必須采用遍歷。

一維數(shù)組
int [12] = {2};
sqrt()
sqrt() 用來求給定值的平方根
二維數(shù)組


a[0][0]就是1,通俗點話就是說袋子里面裝著三個東西,但是這個袋子是從0開始的。

用來存放字符的數(shù)組稱為字符數(shù)組
char a[10]; ?//一維字符數(shù)組 char b[5][10]; ?//二維字符數(shù)組
char c[20]={'c', ' ?', 'p', 'r', 'o', 'g', 'r', 'a','m'}; ?// 給部分數(shù)組元素賦值
char d[]={'c', ' ', 'p', 'r', 'o', 'g', 'r', 'a', 'm' }; ?//對全體元素賦值時可以省去長度
字符數(shù)組實際上是一系列字符的集合,也就是字符串(String)。在C語言中,沒有專門的字符串變量,沒有string類型,通常就用一個字符數(shù)組來存放一個字符串。
char str[30] = {"c.biancheng.net"};
char str[30] = "c.biancheng.net"; ?
數(shù)組第 0 個元素為'c',第 1 個元素為'.',第 2 個元素為'b',后面的元素以此類推。
為了方便,你也可以不指定數(shù)組長度
char str[] = {"c.biancheng.net"};
char str[] = "c.biancheng.net";

字符不需要想著'\0'
字符串需要想著最后需要加上'\0'
字符數(shù)組的長度至少要比字符串的長度大 1。
字符串輸入輸出
puts()
輸入字符串
puts():輸出字符串并自動換行,該函數(shù)只能輸出字符串。
printf():通過格式控制符%s輸出字符串,不能自動換行。除了字符串,printf() 還能輸出其他類型的數(shù)據(jù)。
gets()
得到字符串
scanf():通過格式控制符%s輸入字符串。除了字符串,scanf() 還能輸入其他類型的數(shù)據(jù)。
gets():直接輸入字符串,并且只能輸入字符串。
scanf() 和 gets() 是有區(qū)別的:
scanf() 讀取字符串時以空格為分隔,遇到空格就認為當前字符串結(jié)束了,所以無法讀取含有空格的字符串。
gets() 認為空格也是字符串的一部分,只有遇到回車鍵時才認為字符串輸入結(jié)束,所以,不管輸入了多少個空格,只要不按下回車鍵,對 gets() 來說就是一個完整的字符串。換句話說,gets() 用來讀取一整行字符串。
注意,scanf() 在讀取數(shù)據(jù)時需要的是數(shù)據(jù)的地址,這一點是恒定不變的,所以對于 int、char、float 等類型的變量都要在前邊添加&以獲取它們的地址。但是在本段代碼中,我們只給出了字符串的名字,卻沒有在前邊添加&,這是為什么呢?因為字符串名字或者數(shù)組名字在使用的過程中一般都會轉(zhuǎn)換為地址,所以再添加&就是多此一舉,甚至會導致錯誤了。
scanf() ? ?如果是字符的話就不需要&符號加上
http://c.biancheng.net/view/1833.html

http://c.biancheng.net/view/1834.html


參考鏈接:http://c.biancheng.net/view/1828.html
3.指針
指針值只能是地址或者空,0表示空。
%p ? 十六進制 ? ? &i ? 以地址返回給你
相鄰數(shù)組之間的差距是4
scanf("%d",&i);
運算符&
獲取變量的地址,它的操作數(shù)必須是變量
不能是表達式。
數(shù)組 相鄰的差距是4
%x
無符號十六進制整數(shù)
\xhh ? ? 十六進制值
%p ? 指針
4.對文件的操作
1.格式化的輸入輸出
printf() ? ?
%
%9.2f ? 合起來有9個字符,小數(shù)點后面兩位
修飾字符
% ? ?
putchar()
字符
scanf()
%i
getchar()
字符 ? ?得到你輸入的字符
2.文件

w 打開只寫。如果不存在則新建,如果存在則清空
a 打開追加。如果不存在則新建,如果存在則從文件尾開始
x 只新建,如果存在則不能打開
操作文件的正確流程為:打開文件 --> 讀寫文件 --> 關閉文件。文件在進行讀寫操作之前要先打開,使用完畢要關閉。

FILE *fopen(char *filename, char *mode);
filename為文件名(包括文件路徑),mode為打開方式,它們都是字符串。
FILE *fp = fopen("demo.txt", "r");
表示以“只讀”方式打開當前目錄下的 demo.txt 文件,并使 fp 指向該文件,這樣就可以通過 fp 來操作 demo.txt 了。fp 通常被稱為文件指針。
FILE *fp = fopen("D:\\demo.txt","rb+");
表示以二進制方式打開 D 盤下的 demo.txt 文件,允許讀和寫。
整體來說,文件打開方式由 r、w、a、t、b、+ 六個字符拼成,各字符的含義是:
r(read):讀
w(write):寫
a(append):追加
t(text):文本文件
b(binary):二進制文件
+:讀和寫
字符讀取函數(shù) fgetc
int fgetc (FILE *fp);
fp 為文件指針。fgetc() 讀取成功時返回讀取到的字符,讀取到文件末尾或讀取失敗時返回EOF。
EOF 是 end of file 的縮寫,表示文件末尾,是在 stdio.h 中定義的宏,它的值是一個負數(shù),往往是 -1。fgetc() 的返回值類型之所以為 int,就是為了容納這個負數(shù)(char不能是負數(shù))。
字符寫入函數(shù) fputc
fputc 是 file output char 的所以,意思是向指定的文件中寫入一個字符。fputc() 的用法為:int fputc ( int ch, FILE *fp );
PS:不想寫下去,就到這里吧。。。還要回去看指針是什么玩意呢。
亂七八糟的知識
變量名的命名規(guī)則:
1.不能以數(shù)字開頭,不能使用關鍵字命名
2.由數(shù)字,英文,下劃線(_)組成
% 取余數(shù) ?都需要是整數(shù)
/ 整數(shù)除于整數(shù)的結(jié)果是整數(shù) ?整除
++a 在用之前+1
a++ 是用完a在加+1
邏輯運算符
&& ?and ? 與
兩個雪人在一起,,,與
&& 如果兩個操作數(shù)均為true(非零),則條件為真(取1);
|| or ? ? ? ? 或 ? ?
兩個人,男人或者女人,兩根筷子
|| 如果兩個操作數(shù)中有其中任意一個非零,則條件為真。
! ? ?not ? 非
!用來逆轉(zhuǎn)操作數(shù)的邏輯狀態(tài)。如果條件為真則邏輯非運算符將使其為假。
C 作用域規(guī)則
全局變量是定義在函數(shù)外部,通常是在程序的頂部。全局變量在整個程序生命周期內(nèi)都是有效的,在任意的函數(shù)內(nèi)部能訪問全局變量。
全局變量可以被任何函數(shù)訪問。也就是說,全局變量在聲明后整個程序中都是可用的。
在程序中,局部變量和全局變量的名稱可以相同,但是在函數(shù)內(nèi),如果兩個名字相同,會使用局部變量值,全局變量不會被使用。
就近為原則,我理解