C 基礎語法學習(三) 迴圈

2021-10-07 05:52:43 字數 2402 閱讀 4210

筆者需要參與一項slam專案的開發,經年不用c++知識已經統統上交給了國家,尤其是現在用python煉丹調參不亦樂乎,怕是一時都改不過來習慣。

故決定速刷c++primer(六)一書,把忘掉的東西撿起來,希望不要和python搞混。

(只是熟悉語法的話看菜鳥教程查表更快,但是為了摸魚匯報進度還是過一下書吧)

一看到迴圈就想到迭代,就想到時間複雜度,就想到資料結構。。。。。。。。

以遞增運算子(++)為例:

int x =5;

y = x++

;//y=5,x=6

z =++x;

//z=6,x=6

字首格式++x首先對x進行遞增操作,然後將它賦值給其他變數;而字尾格式x++則是先把x賦值給其他變數,然後再進行遞增操作。顯然,當它不是表示式(即不賦值給其他變數)時,字首與字尾在運算結果上沒有差別(比如for迴圈裡)。

舉個例子:

double x[5]

;double

* pointer = x;

double y1 =

*++pointer;

double y2 =

++*pointer;

double y3 =

*pointer++

;double y4 =

(*pointer)

++;

這裡pointer指向陣列x第乙個元素的記憶體位址,*++pointer表示先對指標進行遞增加一,指向第二個元素位址,然後指標解除取數,所以y1 = 2.3

++*pointer表示先取指標指向的數(第二個元素)(第一步已經改變了指標指向的位址),再對數進行遞增,所以y2 = 3.3

*pointer++表示先對指標進行遞增再解除指標,但是字尾會先給表示式賦值然後才執行遞增操作,所以這裡解除的指標還沒有遞增,y3 = 3.3

(*pointer)++表示對解除指標後的值進行遞增操作,由於上一步指標進行了遞增,所以此時指標指向了第三個元素,賦值給y4後才進行遞增,所以y4 = 3.4

操作符含義

<

小於<=

小於等於

==等於

!=不等於

>

大於注意賦值與關係判斷裡等於的區別

對於c風格字串,使用strcmp函式,但是用string類會更簡單,可以直接string ****** != "sdksl"操作。

乙個典型結構即:

for

(初始值;測試表示式;更新迴圈測試的值)

for(

int i=

0;i<

5;i++

)

string name =

"angelbaby"

;int i =0;

while

(name[i]

!='\0'

)// process to end of string

while迴圈和for迴圈幾乎等效,一般使用for迴圈。

do

body

while

(test-expression)

;

出口條件的迴圈適用範圍比較小,作為了解。

char ch;

int count =0;

cin.

get(ch)

;// attempt to read a char

while

(cin.

fail()

== false)

// test for eof

cout << endl << count <<

" characters read\n"

;

cin.fail()檢測是否輸入到句尾,cin.get(ch)獲取輸入字元,可輸入空格等特殊符號。

需要迴圈輸入數字時,迴圈條件可以while (cin>>val1>>val2)型別轉換判斷bool嘛。

例項:大括號

int array1[2]

[4]=

,};

通過array1[i][j]索引即可使用。

相關練習均已上傳github。

C 基礎語法學習

基本用語區分 解決方案和專案 解決一類問題的方案。比如要建一套房子是不是要有一套解決方案,那是不是要把該方案分解成幾個小專案,如設計,裝修,水電安裝,材料運輸等專案 c 和.net net 是一種平台一種技術,裡面包含著乙個非常大的 庫 可以模擬成 jvm c 是一種語言,我們可以使用c 去呼叫.n...

基礎語法學習

public class hello 類名,變數名,方法名 關鍵字 以 a z a z 開頭 整數型別 byte short int long l 浮點型別 float f double 字元型別 char boolean型別 true 或 false 引用資料型別 類,介面,陣列 二進位制 0b ...

C 基礎語法學習(4)

如果能作為左值則返回引用,例如a b不能作為左值,a b可作為左值,a 不能作為左值,其返回乙個值,是常量,a可作為左指,返回a這個變數 2.當無法修改左運算元的類時,使用全域性變數進行過載,如 和 因為無法修改ostream和istream,只能用友元函式進行過載,若用成員函式,成員變數會作為左值...