C++學(xué)習(xí)5

姓名:張立斐 ? 學(xué)號(hào):19020700001? ?學(xué)院:電子工程學(xué)院?

轉(zhuǎn)自:https://blog.csdn.net/lvliang2017232003/article/details/85759627

【嵌牛導(dǎo)讀】C++學(xué)習(xí)

【嵌牛鼻子】C++

【嵌牛提問(wèn)】如何學(xué)習(xí)C++?

【嵌牛正文】

1.C++的函數(shù)返回值不能是數(shù)組虎谢,但可以是整數(shù)饱岸、浮點(diǎn)數(shù)李命、指針、結(jié)構(gòu)或?qū)ο笙彼?梢詫?shù)組作為結(jié)構(gòu)或?qū)ο蟮慕M成部分來(lái)返回。

2. int arr[];

? arr[i]==*(arr+i);? &arr[i]==arr+i;

3.將數(shù)組類型和元素?cái)?shù)量告訴數(shù)組處理函數(shù)奶卓,用兩個(gè)不同的參數(shù)傳遞:void fillArray(int arr[], int size);

不要用 void fillArray (int arr[size]);

4. const Size=8;

int sum_arr(int arr[], int n);

void main(){

int cook[Size]={1,2,3,4,5,6,7,8}; cout<<sizeof cook ; //顯示的長(zhǎng)度是32

int sum=sum_arr(cook,Size); }

int sum_arr( int arr[], int n){

cout<<arr; cout<<sizeof arr; //顯示的長(zhǎng)度是4, cook和arr指向同一個(gè)地址陵珍,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 但sizeof cook是32(整個(gè)數(shù)組的長(zhǎng)度)寝杖,sizeof arr是4(指針變量的長(zhǎng)度)

......

}

5.保護(hù)數(shù)組,使數(shù)組視為可讀數(shù)據(jù)時(shí)互纯,用const聲明

函數(shù)要修改數(shù)組瑟幕,原形:void f_modify( double arr[], int n);

函數(shù)不修改數(shù)組,原形:void f_nochange(const double arr[], int n);

8.使用數(shù)組區(qū)間的函數(shù):

const Size=8;

int sum_arr(const int * begin, const int * end);

void main(){

int cook[Size]={1,2,3,4,5,6,7,8};

int sum=sum_arr(cook,? cook+Size);? }

int sum_arr(const int * begin, const int * end){

int total=0;? ? const int * pt;?

for (pt=begin; pt!=end; pt++)

? total=total+ *pt;

}

9.一般將指針參數(shù)聲明為 指向一個(gè)常量對(duì)象的指針,不能使用指針來(lái)修改所指向的值只盹,而能修改指針指向的位置辣往。

int age=39;

const int * pt=&age; //指向一個(gè)常量對(duì)象的指針,不能使用指針來(lái)修改所指向age的值 殖卑,可以使pt指向其他位置? *pt+=1; (不合法)

int * const finger=&age;//指針本身為常量站削,不能修改指針指向的位置,但可以用finger修改age的值

以上finger, *pt是const ,*finger 和pt 不是const.

禁止將常量數(shù)組的地址賦給非常量指針孵稽,可以使用強(qiáng)制類型轉(zhuǎn)換來(lái)突破這種限制许起。(P222)

10.函數(shù)與二維數(shù)組:

int data[3][4]={{1,2,3,4},{9,2,1,4},{2,4,6,3}};? int total=sum(data,3);

sum的原形: int sum( int (*arr2)[4] , int size); // (*arr2)[4] 表示由4個(gè)int組成的數(shù)組的指針? size表示行數(shù)

? ? ? ? ? ? 或者:int sum( int arr2[][4], int size);? //這兩個(gè)原形arr2是指針而不是數(shù)組

( int *arr2[4] 表示由4個(gè)指向int的指針組成的數(shù)組。)

arr2

arr2+r

*(arr2+r)

*(arr2+r)+c

*(*(arr2+r))+c==arr2[r][c]

12.while (*str) 等價(jià)于 while (*str!="\0")

#include<iostream>

char * buildstr(char c,int n);? //該函數(shù)的返回值是一個(gè)指針

int main()

{

? using namespace std;

? char ch;

? int times;

? cout<<"Enter a character: ";

? cin>>ch;

? cout<<"Enter an integer: ";

? cin>>times;

? char * ps=buildstr(ch, times);

? cout<<ps<<endl;

? delete [] ps;? //釋放指針?biāo)竷?nèi)存

? ps=buildstr('+',20);? //釋放后可以重新使用指針

? cout<<ps<<"Done"<<ps<<endl;

? delete [] ps;? //釋放指針?biāo)竷?nèi)存

? return 0;

}

char * buildstr(char c,int n) //該函數(shù)的返回值是一個(gè)指針

{

? char * pt=new char[n+1]; //用new分配動(dòng)態(tài)數(shù)組

? pt[n]='\0';

? while(n-->0)

? ? ? pt[n]=c;

? return pt;

}

13.函數(shù)與結(jié)構(gòu):函數(shù)返回的是結(jié)構(gòu)

#include "stdafx.h"

#include<iostream>

struct travel_time

{

int hour;

int min;

};

const int mins_perh = 60;

travel_time sum(travel_time t1, travel_time t2);

void showtime(travel_time t);

using namespace std;

int main()

{

travel_time day1 = { 5, 24 };

travel_time day2 = { 6, 48 };

travel_time trip = sum(day1, day2);

cout << "Two days total: ";

showtime(trip);

travel_time day3= {3, 51};

cout << "There days total: ";

showtime(sum(trip, day3));

}

travel_time sum(travel_time t1, travel_time t2) //函數(shù)要返回一個(gè)travel_time結(jié)構(gòu)菩鲜,應(yīng)先聲明一個(gè)travel_time結(jié)構(gòu)

{

travel_time total;

total.hour = t1.hour + t2.hour + (t1.min + t2.min) / mins_perh;

total.min = (t1.min + t2.min) % mins_perh;

return total;

}

void showtime(travel_time t)

{

cout << t.hour << "hours, " << t.min << "minutes.\n";

}

傳遞結(jié)構(gòu)地址時(shí)园细,函數(shù)不定義為由返回的類型比較方便

#include "stdafx.h"

#include<iostream>

#include<cmath>

using namespace std;

struct rect

{

double x;

double y;

};

struct polar

{

double dis;

double angle;

};

void rect_polar(const rect * pxy, polar * pda);

void showploar(const polar * pda);

int main()

{

rect zb;

polar? da;

cout << "Enter the x and y value ";

while (cin >> zb.x >> zb.y) //訪問(wèn)結(jié)構(gòu)數(shù)據(jù)的成員用句點(diǎn) .

{?

rect_polar(&zb, &da); //參數(shù)類型是指針,應(yīng)對(duì)結(jié)構(gòu)變量取地址

showploar(&da);

cout << "Next two number(q to quit): ";

}

return 0;

}

void rect_polar(const rect * pxy, polar * pda) //無(wú)返回值接校,用另一個(gè)參數(shù)來(lái)存儲(chǔ)所需結(jié)果

{

const double rad_to_ang = 57.29577951;

pda->dis = sqrt(pxy->x*pxy->x + pxy->y*pxy->y); //訪問(wèn)結(jié)構(gòu)指針的成員用->

pda->angle = atan2(pxy->y, pxy->x)*rad_to_ang;

}

void showploar(const polar * pda)

{

cout <<"distance="<< pda->dis << ", angle=" << pda->angle;

}

14. 聲明string數(shù)組: string list[5];

寫(xiě)入string數(shù)組:for(int i=0;i<5;i++)? getline( cin, list[i] );

15.函數(shù)的遞歸(P239例7.16)

16. 一個(gè)函數(shù)think() ,函數(shù)的名字think即為函數(shù)think()的地址

獲取函數(shù)地址:process(think);? //傳輸think()函數(shù)的地址給process()

? ? ? ? ? ? ? ? ? ? ? ? thought(think());? //傳輸think()函數(shù)的返回值給thought()

聲明函數(shù)指針:double pam( int ); double (*pf) ( int ); pf=pam // pf是一個(gè)指向函數(shù)的指針

double *pf ( int ) ;//表示pf() 返回是指針的函數(shù)

用指針調(diào)用函數(shù): double x=pam(4);? double y=(*pf) (5); 或者 double y=pf (5);

17.在函數(shù)原型中參數(shù)列表const double ar[] 與const double *ar的含義相同猛频。

自動(dòng)類型判斷auto只能用于簡(jiǎn)單的單只初始化,不能用于初始化列表蛛勉。

(1)函數(shù)原型:

const double * f1(const double ar[], int n);

const double * f2(const double? [], int );

const double * f3(const double *, int );

(2)聲明指向函數(shù)的指針:

const double * (*pa) (const double *, int )=f1; //聲明一個(gè)指針鹿寻,指向f1:

const double * (*pb[3]) (const double *, int )={ f1,f2,f3 }; // 聲明一個(gè)指針數(shù)字,指向f1诽凌、f2毡熏、f3,并初始化:

pb是一個(gè)包含3個(gè)指針的 數(shù)組,每個(gè)指針指向一個(gè)函數(shù)皿淋,const double *, int作為參數(shù)招刹,并返回一個(gè)const double *。

auto pa=pb;? //合法

(3)函數(shù)調(diào)用:

const double? *px=pb[0] (av,3); //av,3是參數(shù)? ? 獲取返回的值: double x=*pb[0] (av,3);

const double? *py= (*pb[0]) (av,3);? ? ? ? ? ? ? ? ? ? 獲取返回的值: double y=*(*pb[0] ) (av,3);

18.創(chuàng)建指向整個(gè)指針數(shù)組的指針(P246例7.19)

————————————————

版權(quán)聲明:本文為CSDN博主「lvliang2229」的原創(chuàng)文章窝趣,遵循CC 4.0 BY-SA版權(quán)協(xié)議疯暑,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/lvliang2017232003/article/details/85759627

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哑舒,一起剝皮案震驚了整個(gè)濱河市妇拯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洗鸵,老刑警劉巖越锈,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異膘滨,居然都是意外死亡甘凭,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門火邓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)丹弱,“玉大人德撬,你說(shuō)我怎么就攤上這事《愀欤” “怎么了蜓洪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)坯苹。 經(jīng)常有香客問(wèn)我隆檀,道長(zhǎng),這世上最難降的妖魔是什么粹湃? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任恐仑,我火速辦了婚禮,結(jié)果婚禮上再芋,老公的妹妹穿的比我還像新娘菊霜。我一直安慰自己,他們只是感情好济赎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著记某,像睡著了一般司训。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上液南,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天壳猜,我揣著相機(jī)與錄音,去河邊找鬼滑凉。 笑死统扳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的畅姊。 我是一名探鬼主播咒钟,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼若未!你這毒婦竟也來(lái)了朱嘴?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤粗合,失蹤者是張志新(化名)和其女友劉穎萍嬉,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體隙疚,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡壤追,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了供屉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片行冰。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡溺蕉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出资柔,到底是詐尸還是另有隱情焙贷,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布贿堰,位于F島的核電站辙芍,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏羹与。R本人自食惡果不足惜故硅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纵搁。 院中可真熱鬧吃衅,春花似錦、人聲如沸腾誉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)利职。三九已至趣效,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間猪贪,已是汗流浹背跷敬。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留热押,地道東北人西傀。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像桶癣,于是被迫代替她去往敵國(guó)和親拥褂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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

  • 姓名:張立斐 學(xué)號(hào):19020700001 學(xué)院:電子工程學(xué)院 轉(zhuǎn)自:https://blog.csdn.net...
    zlf閱讀 343評(píng)論 0 0
  • 技術(shù)交流QQ群:1027579432鬼廓,歡迎你的加入肿仑! 1.Cpp中的指針 每個(gè)變量都有一個(gè)內(nèi)存位置,每一個(gè)內(nèi)存位置...
    CurryCoder閱讀 2,689評(píng)論 0 1
  • valarray類簡(jiǎn)介 valarrray類是由頭文件valarray支持的碎税。顧名思義尤慰,這個(gè)類用于處理數(shù)據(jù)。他支持...
    鬼?xiàng)n嗜閱讀 497評(píng)論 0 0
  • 2018年8月17日 22:14:16 title: C++PrimerPlus讀書(shū)筆記typora-root-u...
    _layty閱讀 216評(píng)論 0 0
  • 技術(shù)交流QQ群:1027579432雷蹂,歡迎你的加入伟端! 1.Cpp中的數(shù)組 C++支持?jǐn)?shù)組數(shù)據(jù)結(jié)構(gòu),它可以存儲(chǔ)一個(gè)固...
    CurryCoder閱讀 1,576評(píng)論 0 1