C語(yǔ)言基礎(chǔ)知識(shí)(下)

函數(shù)?

相當(dāng)于功能模塊章咧,通過調(diào)用函數(shù),能直接實(shí)現(xiàn)函數(shù)的功能

函數(shù)定義: 返回值類型 函數(shù)名(參數(shù)){

函數(shù)體

}

作用: 避免寫大量的重復(fù)代碼

能夠使代碼更加精簡(jiǎn)

四種形式:?

無參無返回值

void name ();

無參有返回值

int name ();

有參無返回值

int name (int a,int b);

有參有返回值

返回值類型: 無返回值類型倍宾,寫成 void

C語(yǔ)言中不能返回?cái)?shù)組

如果有返回值,必須使用return返回

函數(shù)名: 命名規(guī)范和變量名一樣胜嗓,與返回值類型用空格隔開

參數(shù): 放在與函數(shù)名緊挨著的括號(hào)內(nèi)高职,括號(hào)內(nèi)可以有多個(gè)參數(shù),每個(gè)參數(shù)都要指定數(shù)據(jù)類型辞州,不管數(shù)據(jù)類型是否相同

return: 返回指定的數(shù)據(jù)類型怔锌,由函數(shù)的返回值類型決定什么類型的數(shù)據(jù)

碰到return,函數(shù)執(zhí)行結(jié)束,return后面的代碼不再執(zhí)行

// 不能在函數(shù)里面調(diào)用函數(shù)

函數(shù)調(diào)用: 當(dāng)函數(shù)定義在調(diào)用處的下面時(shí)埃元,需要函數(shù)聲明(函數(shù)聲明:將函數(shù)的大括號(hào)變成分號(hào)涝涤,放在調(diào)用處所在函數(shù)的上面? void printfHelloWorld();)

函數(shù)定義在調(diào)用處所在函數(shù)的上面時(shí),不需要函數(shù)聲明

* 1. 建文件 點(diǎn)擊你想放的位置->Command+N->OS X->Source->C file

* 2. 在.h 里面聲明一個(gè)函數(shù)岛杀, .c 實(shí)現(xiàn)這個(gè)函數(shù)

* 3. 該文件內(nèi)導(dǎo)入該文件的頭文件,也就是.h文件

* 4. 直接調(diào)用函數(shù)就行

函數(shù)的嵌套調(diào)用

/*

* s = (2*2)! + (3*3)! +(4*4)!

* 1阔拳、整型數(shù)的平方

* 2、一個(gè)整型數(shù)的階乘

* 3类嗤、三個(gè)整形的平方的階乘的和

*/

#includeint method2(int a)

{

int sum = 1;? // 用sum獲取到a的階乘

for (int i = 1; i<=a; i++)

?{

sum *= i;

}

return sum;

}

int method1(int n){

int sum = 0; //sum接受最終的結(jié)果

for (int i = 2; i<=n; i++)?

{

//? ? sum +=i*i;? (用一個(gè)函數(shù)計(jì)算階乘)

sum += method2(i*i);? //通過method2獲取到i值平方的階乘糊肠,再通過sum累加i值平方的階乘

}

return sum;

}

int main(){

int sum = method1(4);

printf("%d\n",sum);

}

遞歸函數(shù)

/*

本質(zhì):自己調(diào)用自己

5! (jiecheng(5))

? ? ? ?5*4! (5*jiecheng(4))

? ? ? ? ? ?4*3! (4*jiecheng(3))

? ? ? ? ? ? ? ? 3*2! (3*jiecheng(2))

? ? ? ? ? ? ? ? ? ? 2*1! (2*jiecheng(1))

#includeint jiecheng (int n){

if (n == 1)?

{

return 1;

}

return n*jiecheng(n-1);

}

int main (){

printf("n的階乘=%d\n",jiecheng(5));

}


結(jié)構(gòu)體概念

結(jié)構(gòu)體:也相當(dāng)于一個(gè)容器遗锣,與數(shù)組的本質(zhì)區(qū)別在于货裹,數(shù)組只能存放一種數(shù)據(jù)類型,而結(jié)構(gòu)體能夠存放多種數(shù)據(jù)類型

結(jié)構(gòu)體能夠直接復(fù)制精偿,可以通過結(jié)構(gòu)體的這種特性弧圆,讓數(shù)組直接賦值

利用結(jié)構(gòu)體可以創(chuàng)造多種數(shù)據(jù)類型

結(jié)構(gòu)體的聲明

格式:struct 結(jié)構(gòu)體名

{

屬性類型 屬性名1;

屬性類型 屬性名2;

...

屬性類型 屬性名n;

};

定義結(jié)構(gòu)體變量

?結(jié)構(gòu)體名字 結(jié)構(gòu)體變量 = 初值;

? ?修改結(jié)構(gòu)體變量的內(nèi)容,通過給結(jié)構(gòu)體變量.相應(yīng)的屬性來賦值或者取值

定義過的結(jié)構(gòu)體變量还最,不能再通過大括號(hào)來賦值


結(jié)構(gòu)體的優(yōu)化

? typedef 能夠給數(shù)據(jù)類型重命名

格式:typedef type name

type:原數(shù)據(jù)類型的名字

name:重新給原數(shù)據(jù)類型設(shè)置的名字

結(jié)構(gòu)體嵌套

typedef struct Brithday{? //創(chuàng)建一個(gè)學(xué)生體并重命名

int year;

int month;

int day;

}Brithday;

typedef struct Student{? //創(chuàng)建一個(gè)學(xué)生體并重命名

char name[20];

Brithday brithday; //結(jié)構(gòu)體的嵌套墓阀,也可以不嵌套,用結(jié)構(gòu)體Brithday的內(nèi)容替換

}Student;

int main (){

Student pangrenmeng = {"pang",{1993,03,16}};

int month = pangrenmeng.brithday.month;

指針概念

1.計(jì)算機(jī)在內(nèi)存中存放數(shù)據(jù)拓轻,首先需要為數(shù)據(jù)找到一塊地址

2.每塊地址都有一個(gè)編號(hào)斯撮,通過編號(hào)找到這塊地址

3.地址的編號(hào)其實(shí)就是指針

4.指針指向的就是計(jì)算機(jī)磁盤內(nèi)的一塊地址

5.指針變量:就是用來存儲(chǔ)地址的

格式:

數(shù)據(jù)類型 *變量名 = 賦初值;

'*'就是一個(gè)標(biāo)志符:用來表明這個(gè)變量是指針變量

數(shù)據(jù)類型:用來指示變量所指向的地址,存放什么樣的數(shù)據(jù)

賦初值:因?yàn)槎x的是指針變量扶叉,所以賦初值時(shí)要給一個(gè)地址

'&'取地址符

格式:

&變量名

在變量名前加一個(gè)&勿锅,就代表取到了該變量所在的地址

取值運(yùn)算符

取值格式:

*指針變量

在變量的前面一個(gè)*代表取出來改地址的值

使用指針來交換兩個(gè)變量的值

int i = 3;

int e = 7;

int * r = &i;

int * t = &e;

int temp = 0;

temp = *r;

*r = *t;

*t = temp;

printf("i = %d\ne = %d\n",*r,*t);

int y = 7;

int x = 9;

int * s= &y;

int * z= &x;

int temp1 = 0;

temp1 = *s;

*s = *z;

*z = temp1;

printf("y = %d\nx = %d\n",*s,*z);

指針與數(shù)組

數(shù)組: 定義一個(gè)數(shù)組,系統(tǒng)會(huì)分配一塊連續(xù)的內(nèi)存空間枣氧,數(shù)組名就是該數(shù)組里面第一個(gè)元素的地址

數(shù)組名就是一塊地址

char *strings[3] = {"iPhone" , "Android" ,"win8"};

printf("%c\n%s\n%s\n",*(strings[1]+1),*(strings+1),*(strings+2));

指針與字符

char string[] = "awfr2";

char test = *(string+1);

*string = test;

*(string+1) = 'q';

*(string+4) = 'q';

printf("%s\n",string);

結(jié)構(gòu)體指針

// 定義一個(gè)英雄結(jié)構(gòu)體

typedef struct Hero

{

char name[10];

int blood;

char sex;

}Hero;


int main() {

Hero gailun = {"gailun",350,'m'}; ? //定義一個(gè)Hero類型的指針

Hero *p = &gailun; ?//讀取Hero類型指針里面的數(shù)據(jù)

printf("%s的一級(jí)血量是%d\n",(*p).name,(*p).blood);

Hero datou ={"datou",300,'m'};

Hero *p1 = &datou;

printf("%s的一級(jí)血量是%d\n",(*p1).name,(*p1).blood);


結(jié)構(gòu)體數(shù)組

int main(){

Hero gailun = {"gailun",350,'m'};

Hero aixi = {"aixi",300,'w'};

Hero ruizi = {"ruizi",500,'m'};

// 定義一個(gè)結(jié)構(gòu)體數(shù)組

// 數(shù)組名代表的是數(shù)組的第一個(gè)元素的地址

Hero list[] = {gailun,aixi,ruizi};

//定義一個(gè)結(jié)構(gòu)體指針溢十,用來存放地址

Hero *hero = list;

printf("%s的血量%d\n",(*hero).name,(*hero).blood);

printf("%s的血量%d\n",(*(hero+1)).name,(*(hero+1)).blood);

printf("%s的血量%d\n",(*(hero+2)).name,(*(hero+2)).blood);


指針的指針

int main(){

//定義變量a 系統(tǒng)給地址

int a = 6;

//定義一個(gè)指針變量,系統(tǒng)還會(huì)給地址

int *p = &a;

//定義一個(gè)指針變量达吞,來存儲(chǔ)變量p的地址

int **pp = &p;

//通過雙星找到指針的指針里面的值

printf("a=%d\n",**pp);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末张弛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子酪劫,更是在濱河造成了極大的恐慌吞鸭,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件覆糟,死亡現(xiàn)場(chǎng)離奇詭異刻剥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)滩字,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門造虏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來御吞,“玉大人,你說我怎么就攤上這事漓藕√罩椋” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵撵术,是天一觀的道長(zhǎng)背率。 經(jīng)常有香客問我,道長(zhǎng)嫩与,這世上最難降的妖魔是什么寝姿? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮划滋,結(jié)果婚禮上饵筑,老公的妹妹穿的比我還像新娘。我一直安慰自己处坪,他們只是感情好根资,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著同窘,像睡著了一般玄帕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上想邦,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天裤纹,我揣著相機(jī)與錄音,去河邊找鬼丧没。 笑死鹰椒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的呕童。 我是一名探鬼主播漆际,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼夺饲!你這毒婦竟也來了奸汇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤往声,失蹤者是張志新(化名)和其女友劉穎茫蛹,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烁挟,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年骨坑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了撼嗓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柬采。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖且警,靈堂內(nèi)的尸體忽然破棺而出粉捻,到底是詐尸還是另有隱情,我是刑警寧澤斑芜,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布肩刃,位于F島的核電站,受9級(jí)特大地震影響杏头,放射性物質(zhì)發(fā)生泄漏盈包。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一醇王、第九天 我趴在偏房一處隱蔽的房頂上張望呢燥。 院中可真熱鬧,春花似錦寓娩、人聲如沸叛氨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)寞埠。三九已至,卻和暖如春焊夸,著一層夾襖步出監(jiān)牢的瞬間仁连,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工淳地, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怖糊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓颇象,卻偏偏與公主長(zhǎng)得像伍伤,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子遣钳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 第1章 第一個(gè)C程序第2章 C語(yǔ)言基礎(chǔ)第3章 變量和數(shù)據(jù)類型第4章 順序結(jié)構(gòu)程序設(shè)計(jì)第5章 條件結(jié)構(gòu)程序設(shè)計(jì)第6章...
    小獅子365閱讀 10,613評(píng)論 3 71
  • 指針是C語(yǔ)言中廣泛使用的一種數(shù)據(jù)類型蕴茴。 運(yùn)用指針編程是C語(yǔ)言最主要的風(fēng)格之一劝评。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,424評(píng)論 3 44
  • 一倦淀、框架 1蒋畜、Mac系統(tǒng)及常用工具、進(jìn)制;C數(shù)據(jù)類型撞叽、常量變量姻成、運(yùn)算符插龄、表達(dá)式、格式化輸入輸出 2科展、關(guān)系運(yùn)算符均牢、邏...
    師景福閱讀 679評(píng)論 0 1
  • C語(yǔ)言大總結(jié) 一、基礎(chǔ): 1才睹、進(jìn)制徘跪、位權(quán)、1字節(jié)等于8位(位是計(jì)算機(jī)的最小儲(chǔ)存單位琅攘,字節(jié)是計(jì)算機(jī)最小存儲(chǔ)單元)垮庐、十...
    霧中探雪閱讀 2,818評(píng)論 1 36
  • “他過得好就好,不必讓我知道乎澄,我過不好就不好 突硝,也不想他知道≈眉茫” 這是前兩天和夏夏見面的時(shí)候解恰,聊起江楠,我說的話浙于。...
    安在閱讀 421評(píng)論 0 1