【零基礎(chǔ)學(xué)C語言】老九零基礎(chǔ)學(xué)編程系列之C語言

p2 常用算法:窮舉法、迭代法、遞歸法。
p9
變量命名規(guī)則:

?相關(guān)資料:
保留字_百度百科
https://baike.baidu.com/item/%E4%BF%9D%E7%95%99%E5%AD%97/7674788?fr=aladdin
p10
基本的數(shù)據(jù)類型分為數(shù)值和非數(shù)值。
數(shù)值分為整型(用來表示整數(shù))和非整型(或者說浮點(diǎn)型,用來表示小數(shù))。
整型包括short、int、long三種。三種由于所占內(nèi)存不同,所以能表示的數(shù)值范圍不同(但是C語言中l(wèi)ong和int范圍一樣)。
?相關(guān)資料:
C/C++:long int與long long的區(qū)別
https://blog.csdn.net/tjcwt2011/article/details/109687327
非整型(浮點(diǎn)型)包括float、double兩種。
非數(shù)值的數(shù)據(jù)類型為char。
?相關(guān)資料:
C語言中的字符(char)詳細(xì)講解
https://www.jb51.net/article/88695.htm

p11

一些格式占位符:
%d:代表整數(shù),%f:單精度浮點(diǎn)數(shù)float,%fl:雙精度浮點(diǎn)數(shù)double,%s:字符串,%c:char,%p:指針。
%3.2f:在程序中顯示出的單精度浮點(diǎn)數(shù)會(huì)有小數(shù)點(diǎn)前三位、小數(shù)點(diǎn)后兩位。
把3換成別的數(shù)字就相應(yīng)有小數(shù)點(diǎn)前幾位。
把2換成別的數(shù)字就相應(yīng)有小數(shù)點(diǎn)后幾位。
把f換成lf就是改變雙精度浮點(diǎn)數(shù)的顯示精度。
注意:顯示精度與實(shí)際精度無關(guān)。
?相關(guān)資料:
格式占位符_百度百科
https://baike.baidu.com/item/%E6%A0%BC%E5%BC%8F%E5%8D%A0%E4%BD%8D%E7%AC%A6/8574147?fr=aladdin
C語言-格式輸入輸出中“%d,%o,%x,%e,%f”等的含義
https://blog.csdn.net/u013706540/article/details/82184145
p12
char類型的變量數(shù)值為‘A’(注意是單引號(hào)),和數(shù)值為65的char類型變量本質(zhì)上一樣,輸出后都會(huì)顯示出A,因?yàn)锳對(duì)應(yīng)的十進(jìn)制ASCII碼就是65。

轉(zhuǎn)義序列:

(先不用記,要用再查。慢慢會(huì)記住的。)
我們學(xué)習(xí)的第一個(gè)輸入函數(shù):scanf。代碼格式和printf相似:scanf("%d",&num)。變量num前面要有&符號(hào)。
p15
%:取模(取余數(shù))符號(hào)。
如:5%3的結(jié)果是2
p16
getchar():獲取字符。(不論輸入多長只能獲取一個(gè))
putchar():輸出字符。(只能輸出一個(gè))
fflush(stdin):清空緩沖區(qū)。
看視頻以幫助理解:
開始演示getchar():
使用清空緩沖區(qū)功能以實(shí)現(xiàn)目標(biāo):
(P25的筆記中有相關(guān)應(yīng)用)
開始演示putchar():
經(jīng)典題目:交換a、b的值
解法:
int a,b,c;
c=a;
a=b;
b=c;
整型數(shù)的打印長度控制:
演示%4d
演示%04d
p17
int num=10;
num++; //這句可以換成num = num + 1; 或num += 1; 這幾個(gè)表達(dá)式是等價(jià)的。
另外,num = num + 某個(gè)數(shù)字 和 num += 某個(gè)數(shù)字 是等價(jià)的,都表示給num賦值為num+該數(shù)字。
以此類推,num- -; ++是加1那--就是減1咯。
簡單了解:類型轉(zhuǎn)換(就是對(duì)某個(gè)數(shù)據(jù)類型輸入了不符合該類型精度的數(shù)值,比如double n=6,double是浮點(diǎn)型而6是整數(shù)。)
p18
算術(shù)運(yùn)算符有一元運(yùn)算符、二元運(yùn)算符、復(fù)合運(yùn)算符。
二元運(yùn)算符是+-*/%之類。
%:取模,意思就是取余數(shù),比如5%3的值就是2,因?yàn)?除以3等于1余2。
復(fù)合運(yùn)算符 :p17筆記中的+=就是復(fù)合運(yùn)算符,
(num = num + 某個(gè)數(shù)字 和 num += 某個(gè)數(shù)字 是等價(jià)的,都表示給num賦值為num+該數(shù)字。)
別的復(fù)合運(yùn)算符如-=、*=、/=用法也都一樣,把+=的等價(jià)表達(dá)式里的+替換成相應(yīng)符號(hào),
(如num = num * 某個(gè)數(shù)字 和 num *= 某個(gè)數(shù)字 是等價(jià)的,都表示給num賦值為num*該數(shù)字。)
以此類推。
一元運(yùn)算符(++、- -)的前置后置區(qū)別:
當(dāng)后置,是先用num代替num++或num--運(yùn)算完整句,然后再算num++或num--。
除算術(shù)運(yùn)算符外——
關(guān)系運(yùn)算符:就是些比大小之類的運(yùn)算符。
可能用到的符號(hào):>、<、>=、<=,==是等于,!=是不等于。
計(jì)算結(jié)果為1或0,其中1是真,0是假。
例:int num=5>8;
輸出結(jié)果中num的值會(huì)是0,因?yàn)?并不大于8。
邏輯運(yùn)算符:就是與或非。
&&與,||或、!非。

sinzeof運(yùn)算符:

賦值運(yùn)算符為=,單等號(hào)。
選學(xué)內(nèi)容:

和二進(jìn)制有關(guān)了這玩意。
P19
&&存在短路運(yùn)算,如果&&左邊已經(jīng)為0了,&&右邊的表達(dá)式就不會(huì)被運(yùn)算了。
運(yùn)算符優(yōu)先級(jí)示意圖:
(越上面的優(yōu)先級(jí)越高。)


P20
if結(jié)構(gòu):
if(條件)
{
代碼塊1
}
else
{
代碼塊2
}
如果條件為真就執(zhí)行代碼塊1,不然就執(zhí)行代碼塊2。
P21
多重if結(jié)構(gòu):
if(條件1)
{
代碼塊1
}
else if(條件2)
{
代碼塊2
}
else
{
代碼塊3
}
如果滿足條件1就執(zhí)行代碼塊1,如果不滿足條件1但滿足條件2就執(zhí)行代碼塊2,都不滿足就代碼塊3。
P22
switch結(jié)構(gòu),用個(gè)例子理解吧。
int star; //玩家所獲得物品的星級(jí)
scanf("&d",&star); //且不論為什么這個(gè)程序還要玩家自己輸入星級(jí)
switch(star)
{
case 5:
printf("哇,抽到大獎(jiǎng)啦!");
break; //如果輸入的星級(jí)為5,則執(zhí)行:輸出“哇,抽到大獎(jiǎng)啦!”,之后運(yùn)算過程直接跳出這個(gè)大括號(hào)
case 4:
printf("運(yùn)氣還不錯(cuò)嘛。") ;
break;
default:
printf("呃……這個(gè)也能用吧。") ;;
}
注意:
1.switch()——括號(hào)中的變量只能是整型或字符型。
2.case后面的常量不能相同,就像上面的范例程序,不能先寫一個(gè)“case 5; ……break;” 再寫一個(gè)“case 5;……break;” 。
3.如果其中一個(gè)break沒了,就會(huì)一直往后運(yùn)行。假設(shè)例中去掉第一個(gè)break,那么輸入5的時(shí)候就會(huì)輸出:“哇,抽到大獎(jiǎng)啦!運(yùn)氣還不錯(cuò)嘛?!?/span>
4.default子句可以往前放,但是此時(shí)如果沒有break句就會(huì)出現(xiàn)3的情況,詳見:
5.可以不使用default子句。
P24
while循環(huán)(當(dāng)型循環(huán))
int i=1;
while(i<=10000)
{
printf("%d只羊\n",i);
i++;
}
這就是一個(gè)會(huì)從1只羊一直數(shù)到10000只羊的while循環(huán)程序。
P25
本P中第二道練習(xí)題,我的解法(假設(shè)密碼為四位字母):
#include<stdio.h>
int main()
{
char a='L',b='o',c='n',d='e',e,f,g,h;//四位密碼Lone?
int i=0; //用來計(jì)入錯(cuò)誤次數(shù)的數(shù)值?
while (i<3)?
{
e=getchar();f=getchar();g=getchar();h=getchar(); //輸入四位字母?
if (e==a&&f==b&&g==c&&h==d==1) //如果四個(gè)字母一一符合Lone?
{?
printf("密碼正確");
break; //跳出循環(huán)?
}
else
{
printf("密碼錯(cuò)誤\n");
i++; //錯(cuò)誤次數(shù)+1?
fflush(stdin);//清空緩存區(qū)?
}
}
return 0;
?}??
其中涉及到清空緩存區(qū)的問題。其實(shí)我還是不太明白緩存區(qū)具體是什么,但是在這個(gè)程序中,如果不在再次輸入之前清空緩存區(qū),那么只要第一遍輸入錯(cuò)誤,后面就怎么著都是錯(cuò)誤的。
本P中提到了exit(0),意思是運(yùn)行到這里就退出程序。
用的時(shí)候需要頭文件:stdlib.h。
相關(guān)資料:
C語言中break和exit()的區(qū)別
https://blog.csdn.net/tomatolee221/article/details/89526575
P26
涉及時(shí)間函數(shù),需要用頭文件:time.h
涉及隨機(jī)函數(shù),需要用頭文件:stdlib.h
隨機(jī)函數(shù):srand;一般要用的時(shí)候可以就寫成srand(time(NULL));意思是使用時(shí)間作為種子,產(chǎn)生不同的隨機(jī)數(shù)字。
寫成srand((unsigned)time(NULL));
rand()是隨機(jī)數(shù),范圍:0~32767。如果單獨(dú)輸出rand(),那么會(huì)輸出一個(gè)隨機(jī)但是不變的數(shù),編譯運(yùn)行多少次都是這個(gè)數(shù)。
而如果按圖中步驟:

先srand再輸出rand(),每次運(yùn)行就會(huì)輸出不同的隨機(jī)數(shù)。
Sleep函數(shù):Sleep()的括號(hào)中輸入一個(gè)數(shù)字x,就會(huì)產(chǎn)生x毫秒的間隔。使用時(shí)需要用頭文件:windows.h。具體效果參考:
關(guān)于單步調(diào)試和監(jiān)視:
P27
do-while循環(huán):
do{
循環(huán)操作
}while(循環(huán)條件);
使用時(shí)會(huì)先執(zhí)行一次循環(huán)操作,再判斷是否循環(huán)條件,是則再執(zhí)行循環(huán)操作再判斷,否則退出循環(huán)。
如何取四位數(shù)中的每一位:

P29
for循環(huán):

const,用于定義常量,常量就是只讀的變量。
使用方法:const 數(shù)據(jù)類型 常量名稱以及賦值。
例:const int num=256;
注意:
1.必須在這一個(gè)語句中就賦值,在這個(gè)語句之后,常量就不能再被賦初值或更新了。
2.循環(huán)變量必須更新,否則死循環(huán)。
3.打好分號(hào)。
一般能確定循環(huán)次數(shù)時(shí),使用for循環(huán),否則用while或do-while循環(huán)。
P30
break語句:用于跳出循環(huán)或switch結(jié)構(gòu)。
P31
continue語句的作用:跳過本次循環(huán),繼續(xù)下次循環(huán)。
在while循環(huán)中:跳過本次循環(huán),到判斷循環(huán)條件處。
在do-while循環(huán)中:跳過本次循環(huán),到判斷循環(huán)條件處。
在for循環(huán)中:跳過本次循環(huán),到更新循環(huán)變量處。

P32
講解打印各種星號(hào)圖形
P34


P35&P36
定義數(shù)組的語法:數(shù)據(jù)類型 數(shù)組名[容量];
例:char englishgrade[42];//表示42個(gè)同學(xué)的英語成績等級(jí)(A\B\C\D\E)
初始化數(shù)組的語法:數(shù)據(jù)類型 數(shù)組名[容量]={元素0,元素1,元素2,……};
例:char englishgrade[10]={A,B,E,C,B,A,A,E,C,D};
注意:
1.如果填進(jìn){ }里的元素個(gè)數(shù)沒有達(dá)到[ ]里面所規(guī)定的值,那么剩下的元素默認(rèn)為0。
2.如果[ ]中不填數(shù)字,那么{ }中的元素?cái)?shù)量就默認(rèn)為數(shù)組的容量。(不可以兩個(gè)括號(hào)內(nèi)都不填東西?。?/span>
3.數(shù)組的容量是固定的。
englishgrade[6]表示englishgrade數(shù)組中的第7個(gè)元素(因?yàn)閺?開始)。
如果要錄入第7個(gè)元素對(duì)應(yīng)的數(shù)據(jù):scanf("%c",&englishgrade[6]);
另一種定義常量的方法:#define 常量名 數(shù)據(jù)
例:#define N 42
要寫在int main()前面的位置。
寫了這條定義之后,上面的char englishgrade[42];也可以寫成char englishgrade[N];
與P29筆記中講的定義常量方法的區(qū)別在于,這種定義方法是宏定義。這里的N可以看成int N=42或char N=42等等,宏定義的N是沒有確定的數(shù)據(jù)類型的,它被用在需要什么數(shù)據(jù)類型的地方就會(huì)變成什么數(shù)據(jù)類型。
P37
數(shù)組排序之冒泡排序
基礎(chǔ)原理:反復(fù)判斷,兩兩交換。
核心算法:
P39
定義二維數(shù)組的語法:數(shù)據(jù)類型 數(shù)組名[行數(shù)][列數(shù)];
初始化二維數(shù)組的語法:數(shù)據(jù)類型 數(shù)組名[行數(shù)][列數(shù)]={ { },{ },{ },...,{ } };//{ }的個(gè)數(shù)和行數(shù)一致,{ }內(nèi)的元素個(gè)數(shù)和列數(shù)一致。
例:

關(guān)于%-8.2lf的解釋:
P41
播放聲音的關(guān)鍵代碼:
#include<windows.h>
#include<mmsystem.h>
#pragma comment(lib, "Winmm.lib")
PlaySound(TEXT("路徑\\音樂文件名.wav"), NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);
老師是這么寫的,但我并未試驗(yàn)成功,目前還沒有弄懂怎么播放音頻。
C語言中字符串本質(zhì)上是字符數(shù)組。要將多個(gè)字符串存儲(chǔ)為一組時(shí)(比如某班所有學(xué)生的名字),相當(dāng)于將多個(gè)字符數(shù)組存成一組,就要用到二維數(shù)組。
char names[6][9]表示names數(shù)組最多容納6個(gè)字符串,每個(gè)字符串最大長度為8個(gè)英文字符或4個(gè)中文字符。(關(guān)于字符串容量的內(nèi)容,具體見P62筆記。也可以不用管,最大長度直接定個(gè)很大的數(shù)也行。)
存儲(chǔ)語句可以這樣寫:
char name[6][8]={"小明","小紅","小剛","小王","小張","小李"};
其中6可以不寫。二維數(shù)組里規(guī)定高維容量的數(shù)字可以不寫,但是低維得寫。
也可以在引號(hào)兩邊加{ },可以但沒必要。
要打印時(shí),以打印出“小紅”為例,就是
printf("%s",names[1]};
P42
當(dāng)輸出字符串時(shí),可以規(guī)定輸出長度。比如:
printf("%12s",names[1]};
輸出的字符串長度就有12格,右對(duì)齊,缺少字符的部分為空格。
若要調(diào)整為左對(duì)齊,在12前加上負(fù)號(hào)-即可實(shí)現(xiàn),即:
printf("%-12s",names[1]};
簡單了解查找字符串函數(shù)strcmp:
使用strcmp時(shí)需要存在預(yù)處理命令:#include<string.h>
strcmp的用法:
strcmp(字符串1,字符串2)的運(yùn)算結(jié)果為x;
若兩個(gè)字符串相等,則x=0;若字符串1>字符串2,則x=1;若字符串1<字符串2,則x=-1。字符串的大小是通過ASCII碼來判斷的。
注意:
這里的字符串1和字符串2指的是字符串的名字,如果要在strcmp里直接輸入一個(gè)字符串的內(nèi)容,應(yīng)該在內(nèi)容兩邊加引號(hào)。很多字符串相關(guān)操作可以以此類推。
簡單了解數(shù)組賦值的函數(shù)strcpy:strcpy(字符串1,字符串2);
作用:將字符串2的內(nèi)容賦給字符串1。
P43
指針是一個(gè)值為內(nèi)存地址的變量。是一個(gè)變量。是變量。變量。
基本用法:數(shù)據(jù)類型 * 指針變量名;
暫不確定指針變量值時(shí),將指針變量的初值設(shè)為空:NULL,表示指針不指向任何地址。
應(yīng)用范例:int * ptr_a=NULL;
或:int a; int * ptr_a=&a;
指針變量對(duì)應(yīng)的占位符:%p。
*:取指針?biāo)涗浀牡刂飞系淖兞恐怠?/span>
應(yīng)用范例:
int a=1;//初始化a=1。
int * ptr_a=&a;//初始化指針變量ptr_a為a的地址。
*ptr_a=2;//更改ptr_a所記錄的地址上變量的值,使該地址上的變量a的值變成2。
如果要用另一個(gè)指針來表示指針ptr_a的地址,請(qǐng)注意,定義指針的指針時(shí)需要兩個(gè)*。應(yīng)用范例:
int a=1;
int * ptr_a=&a;
*ptr_a=2;
int ** ptr_ptr_a=&ptr_a;若要通過指針ptr_a的指針ptr_ptr_a來訪問ptr_a指向的空間(所記錄地址上的變量值),則:
printf("%d",**ptr_ptr_a);
P46
數(shù)組就是一塊連續(xù)的內(nèi)存空間。數(shù)組名就是這塊連續(xù)內(nèi)存空間的首地址/首元素地址。
也就是說,假設(shè)有一數(shù)組,名為score,另有一指針變量ptr_score,則:
“ptr_score=&score[0];”與“ptr_score=score;”這兩種寫法是相等的。
關(guān)于指針運(yùn)算:

使用指針訪問數(shù)組元素:
打印時(shí),“score[5]”和“*(score+5)”這兩種寫法是相等的。
P48
二維數(shù)組的首地址也可以用數(shù)組名表示。也就是說,假設(shè)有一二維數(shù)組,名為score,另有一指針變量ptr_score,則:
打印時(shí),“score[ i ][ j ]”、“*(score[ i ]+j)”和“*(*(score+i)+j)"這三種寫法是相等的。
這一節(jié)很多東西難以總結(jié),看視頻+上手練習(xí)才能有效理解。

P50
函數(shù)分為內(nèi)置函數(shù)和自定義函數(shù)。
內(nèi)置函數(shù)由C語言系統(tǒng)提供,使用時(shí)需要在程序前用預(yù)處理指令處理導(dǎo)入頭文件。比如我們寫代碼時(shí)都要用#include<stdio.h>,而使用一些用來處理字符串的函數(shù)時(shí)一定要在程序前寫上#include<string.h>。
自定義函數(shù)可以帶參數(shù)也可以不帶,可以給返回值也可以不給。
P51
一些常用的內(nèi)置函數(shù):

注意:
1.使用以上部分函數(shù)進(jìn)行判斷時(shí),可能輸出結(jié)果并不只有0和1,還有其他數(shù)字。只需要記住,C語言中0位假,非0為真。
2.使用以上函數(shù)時(shí),如果括號(hào)中傳入的是數(shù)字,則表示ASCII碼。要輸入'數(shù)字'表示的才是數(shù)字。就像給char型變量賦值一樣。
P52
另一些常用的內(nèi)置函數(shù):

對(duì)ceil函數(shù),如果小數(shù)點(diǎn)后不為零,則往更大的數(shù)上進(jìn)1,如ceil(9.1)運(yùn)算結(jié)果為10.000000(double型小數(shù)點(diǎn)后是這么多位嗎?記不得了……)。如果需要運(yùn)算的數(shù)是負(fù)數(shù),如ceil(-9.1),那么運(yùn)算結(jié)果是-9,因?yàn)?9更大嘛。floor函數(shù)對(duì)負(fù)數(shù)的運(yùn)算規(guī)則也同理。
還有一些內(nèi)置函數(shù):

srand一般用時(shí)間作為種子,因?yàn)闀r(shí)間會(huì)變化,這樣出來的rand隨機(jī)數(shù)才會(huì)變化。用時(shí)間的話要用time.h頭文件,語句:srand(time(NULL));
用system函數(shù)調(diào)顏色玩的話,需要用到的小資料:

用system("cls")清屏可以做動(dòng)畫玩。
P53

我以后再回頭來學(xué)。
P54
自定義函數(shù)格式:
return_type function_name([datatype1 arg1],[datatype2 arg2],[...])
{
//函數(shù)體
}
其中的三要素:
1.返回值類型return_type
2.函數(shù)名function_name
3.各個(gè)參數(shù)類型和參數(shù)名稱(以上標(biāo)黃部分),參數(shù)可有可無、可多可少
自定義函數(shù)的完整寫法:

如果函數(shù)有返回值,調(diào)用時(shí)要使用對(duì)應(yīng)類型的變量來接收。

要一下返回多個(gè)值的話,可以返回?cái)?shù)組。
返回空值時(shí),函數(shù)返回值類型得是void,語句為:return;
暫時(shí)跳過P56-P57
P58
遞歸就是函數(shù)自己調(diào)用自己的過程。換個(gè)說法,編寫函數(shù)體的時(shí)候就用函數(shù)自己。不過要注意!設(shè)置遞歸退出條件,不然就無限調(diào)用啦。
來個(gè)例子:

暫時(shí)跳過P59-P63
P64
一個(gè)或多個(gè)字符形成的序列叫字符串。像“Hello, I'm Fanta Lone!”是一個(gè)字符串,當(dāng)然這一句的雙引號(hào)不算字符串的一部分。
C語言中的字符串使用字符數(shù)組來存儲(chǔ),相當(dāng)于每個(gè)字符都是字符數(shù)組中的一個(gè)元素。但是用存儲(chǔ)字符數(shù)組的方式存儲(chǔ)字符串時(shí),結(jié)尾一定是\0(這個(gè)是空字符,是字符串的終止符)。
比如說存儲(chǔ)一個(gè)名為“zifuchuan”內(nèi)容為“Cat”的字符串,語句為:
char zifuchuan[4]={'C','a','t','\0'};
另外也可以用這個(gè)語句存儲(chǔ):
char zifuchuan[4]="Cat";
[ ]內(nèi)的4也可以省略。
P65
新函數(shù):gets,用于錄入字符串;puts,用于輸出字符串。
用法:
先定義一個(gè)字符數(shù)組,假設(shè)它名為zifuchuan:
char zifuchuan[50];//隨便定個(gè)數(shù)組空間,免得以后不夠用。
然后進(jìn)行錄入:
gets(zifuchuan);//效果相當(dāng)于scanf("%s",zifuchuan);
再進(jìn)行輸出:
puts(zifuchuan);//效果相當(dāng)于printf("%s\n",zifuchuan);puts函數(shù)自帶末尾換行。
但是gets函數(shù)是存在問題的,已經(jīng)規(guī)定了數(shù)組空間是50,除開\0只能讀入49個(gè)字符,但是你就算輸入超過49個(gè)字符gets函數(shù)也照樣接受,這樣容易產(chǎn)生bug。
解決方法:不要用gets函數(shù)(…),用scanf或fgets函數(shù)。
fgets函數(shù)用法(同樣以zifuchuan為例):
fgets(zifuchuan,50,stdin);//即從標(biāo)準(zhǔn)輸入流中讀取50字節(jié)(49個(gè)字符+\n,沒錯(cuò)是\n)到數(shù)組zifuchuan中。
暫時(shí)跳過P65-P70
P71
定義、基本用法、注意事項(xiàng):

用法1:

用法2(將用法1中大段語句做成類似數(shù)組的形式):

P72
寫結(jié)構(gòu)語句其實(shí)也有兩種方法:

結(jié)構(gòu)里面裝結(jié)構(gòu)(像遞歸一樣)叫嵌套結(jié)構(gòu)。
例(第38行):

當(dāng)使用和打印嵌套結(jié)構(gòu)時(shí)用的語句(第45、46行):

P73

用法:
struct 結(jié)構(gòu)名 *指針名=&結(jié)構(gòu)名;
訪問時(shí):
printf("占位符",(*指針名) . 結(jié)構(gòu)成員);
或:
printf("占位符", 指針名->結(jié)構(gòu)成員);
如圖(47、51、52行):

typedef使用方法:
typedef struct 結(jié)構(gòu)名
{
//結(jié)構(gòu)體
}新名字;
以后就可以用新名字代替“struct 結(jié)構(gòu)名”了。
新函數(shù):gets,用于錄入字符串;puts,用于輸出字符串。
用法
好,今天就學(xué)到這里。