Day08 我真的很懶

2021-10-20 06:28:16 字數 3818 閱讀 1132

睡不著…

**案例

#include

intmain()

a[i]

='\0'

;//陣列不會自動新增'\0',要主動去設定,這樣才能輸出字串

printf

("你輸入的字串是;%s\n"

,a);

return0;

}

​ 在c99的陣列標準中,有這樣一句話,陣列的尺寸如果是整型常量或整型常量表示式,或已確定陣列尺寸時,

那麼這個陣列的型別不是乙個可變長度的陣列,否則,它就是可變陣列

但是仍然存在乙個問題,這行**的輸出結果:

請輸入乙個常數

3請開始輸入字元

abc你輸入的字串是;

ab

會發現輸出的字元比輸入的字元少一位

修改後:

#include

intmain()

a[i]

='\0'

;//陣列不會自動新增'\0',要主動去設定,這樣才能輸出字串

printf

("你輸入的字串是;%s\n"

,a);

return0;

}

#include

intmain()

for(i=

0;i<=

10;i++

)return0;

}

輸出結果:

012345678910
奇怪之處:十一號元素可以輸出

新增一句a[10]=111,仍然可以解決

可能新版的編譯器對陣列越界問題建立的保護機制,但最好不要這樣做

儲存字串的方式:

int

main()

;//不寫元素個數,編譯器會自動計算

char b=

;//可以使用字串常量初始化

char c=

"h0d1n"

//使用字串常量初始化可以省略大括號

}

使用字串處理函式需要加上標頭檔案**#include **

#include

#include

intmain()

輸出結果:

size of string=

6strlen string=

5

輸出結果表明,strlen計算的是字元的個數,不包括陣列後的』\0』,計算尺寸時才包括

字串的拷貝不能使用賦值號,使用賦值號會有報錯

#include

#include

intmain()

輸出結果:

str1:new string

str2:new string

str3:copy successfully

str2的內容複製到str1內後為何str1多出來的「tring」不被列印??

複製的過程將』\0』也複製了進去。編譯器讀到』\0』時讓字串結束了

注意!!!使用該函式時要保證目標字元陣列足以容納零陣列(即逗號左邊的容量容得下右邊的),**

strcpy

(str2,str1)

;//錯誤的!!

但很奇怪,我這樣寫編譯器還能正常輸出。

#include

#include

intmain()

輸出結果

str2=to be
​ 要求:目標陣列(左邊的)已經包含乙個字串,也可以是乙個空字串即「 」,它會找到這個字串的末尾,並把原字串的乙個拷貝給連線過去

#include

#include

intmain()

輸出:

str1=h0d1n

​ strncat與strncpy相似,都要新增乙個引數來限定連線字串的個數,唯一不同的是,strncat會在連線後字元末尾自動新增』\0』例:

#include

#include

intmain()

else

return0;

}

相比strcmp增加了乙個引數n,用於指定只對比前面的n個字元

問題引出:存放單科的成績用乙個陣列就可以,若要存放多個科目呢???

二維陣列,我們通常也稱它為矩陣,將二維陣列寫成行和列的形式方便我們理解,例:每一列都為乙個資料種類,每一行都屬於乙個個體的資料

int a[6]

[6]//六行六列

char b[4]

[5]//四行五列

double c[3]

[4]//三行四列

在記憶體中的存放:

c語言內,c語言是線性的,二維陣列的存放依然是線性的

例: 要定義乙個四行五列的二維陣列b 。首先,定義乙個一維陣列 b[0],b[1],b[2],b[3]為裡面的元素,進而,每乙個元素再存放乙個一維陣列,可以理解為陣列的巢狀,它都是以線性的方式存放的,可以去查詢配合理解。

a[0]

[0];

//訪問a陣列中第一行第一列的元素b[1

][3]

;//訪問陣列b中第2行第4列的元素

若沒有初始化,陣列內道德值為隨機的

int a[3]

[4]=

;

**:

#include

intmain()

;int i,j;

for(i=

0;i<

3;i++

)putchar

('\n');

}return0;

}

輸出:

123

4567

891011

12

int a[3]

[4]=

,,;

或者

int a[3]

[4]=

,,};

//會更直觀

int a[3]

[4]=

,,};

聯絡上一種情況,上句的意思是,將三行的每行第乙個元素賦值為1,3,5,而其餘沒有被賦值的自動填充為0。

int a[3]

[4]=

;

int a[

4]=,

,;

#include

intmain()

;int i,j;

for(j=

0;j<

4;i++

)putchar

('\n');

}return0;

}

我真的很痛苦

本人一小菜鳥,剛畢業就進了一家的小軟體公司,進去沒有多久,就被外包出去。外包出去沒有什麼,關鍵是公司和甲方說我有兩年的開發經驗。這句話真的讓我非常的受傷。一開始還好,漸漸的他們發現我這個開發有兩年的人不知道東西還不少,估計就都開始鄙視我。這點我可以很明顯的感覺到,這點讓我真的很痛苦。雖然我也告訴我自...

愛真的很痛

不知道什麼時候開始喜歡上了他,早上他跟我說 一大早我以前的女友打 過來告訴我說,她如果考上公務員就和我在一起,沒有就不和我在一起,她說她想我和在一起,所以她現在都很努力的看書 為什麼我的心那樣的痛,他一說完這句話,我的眼淚就流了出來。他是不是值得我去選擇呢?我自己也不知道,我頭好痛,我好辛苦。他也跟...

學習筆記day08

單例設計模式 上圖中,想要實現a,b的配置資訊共享,因為a,b是兩個new,所以必然是不同的物件,一種方法就是將其配置資訊全部設成靜態,但資訊很多時會導致儲存資訊過多。單例設計模式流程 1,主函式main進棧,定義s1 2,等號右邊,single載入進入方法區,接著是single的建構函式。s和ge...