學習筆記 c 語法筆記

2021-08-27 14:13:55 字數 4066 閱讀 5827

第一次學習c++是在大二,也是程式設計學的第一門語言,學習的時候大多時間花在理解概念,所以說第一門語言基礎打好了學習其他語言都是大同小異,相同的概念再看下語法就可以了。c++屬於基礎語言,因為專業是系統工程,大多課程需要應用演算法進行系統優化,運籌等,比較注重演算法效率,因此課程安排了c++語言,至今也覺得比較受用,因為很多硬體裝置提供的都是c++介面,因此c++在做演算法以及硬體實現方面都十分實用。都說c++難,可能難在基礎語言,以及指標等一些概念上,這些都是只有做演算法才會用上,一般反正如果自己做小應用的時候是很少用上這些概念,最多的就是控制,迴圈,函式,物件導向等。現在很多語言也是基於c++語言演化來的例如python,手感更好但是畢竟演化經過了包裝,效率肯定不及c++,就迴圈而言就慢很多。

//乙個保留最大兩個數的例子

cin>>n;

intmax=n;

int larger=n;

while (n<10)

}

(void/返回型別引數)return type function

name

( parametres形參)

void swapbyref(int & ,int & )
int

count;

int& cref=count;

//cref是count的別名

cout

<< &c[0];

//錯誤事例

float fb[3(整數或整型表示式)]={};

# define size 10;
char s1="hello";

等同於char s1=

char

str[20];

cin >> str;

例:

# include 

string s1,s2;

cin >>s1;

cin >>s2;

cout

<< s1 +『 』+ s2 << endl; //s2拼接到s1後

cout

<< s1.size(); // 輸出s1的長度

string w[7]=;

cout

int a[3][4]=//從左至右,從上至下,申請了記憶體但未賦值的預設賦為為0
for (row=0;row<3;row++)

}

for(int i=0; i<5; i++)

}

*:間接引用(位址所指向的值),&:取址,*&:相抵消(*&=&*)

bptr=&b[10];

for(int i=0;i<10;i++)

cin>>*(aptr+2);

等同於cin>>a[2];

錯誤範例

//錯誤範例

char s="hello";

char *p=&s

//s本身就是位址

下列等同

cout<[2];    //b與bptr是位址(指標是常量,無法修改)

<< *(bptr+2);

<< bptr[2];

<<*[b+2];

chara[10]="hello";

char *p=a;//注意定義乙個指標p,這裡*為定義p為指標,賦值需賦值指標,使用的時候,*p才是指標p指向的值

while(*p!=10)

cout<<*p++;

if(numptr[i]>*maxptr)

maxptr=&numptr[i] //等價於maxptr=numptr+i

cout

<< *maxptr

cout

<< maxptr-numptr(即&numptr[0])//下標:兩位址差

cin >> n;

numptr=new

int[n];

cin>> n;

int * pdata;

pdata=new

int[n];

for(int i=0;icout

<< pdata[i];

正確: char *p="hello"

錯誤: char

str[14];

str="hello";// 陣列不能賦值字串

void swap_addr(int

*x,int

*y)swap-addr(&na,&nb); //傳指

# include 

# include //隨機數需要新增這兩個標頭檔案(系統函式)

strand(time(0));

for(int i=0;i<10;i++)

hour=(h>=&&h<24)?h

:0;//給hour賦值,若0

24,則賦值為h,否則賦值為0

time::time()
等同於

time::time(int h,int m,int s)
time *tptr;

tptr=&t;

tptr->printstandard();//指標訪問類的成員

time time::settime(int h,int m,int s)
//定義student類繼承person

class student:public person;

a.point:

:print();

circle::circle(int xvalue,int yvalue,double radius)::point (xvalue,yvalue

//或在基類中寫預設函式->建構函式的繼承

)

//模板定義一系列方程

template

rect(int) ir(10,5); //類函式模板使用(說明什麼型別)

一介面多實現(避免多」if」繁瑣語句),使派生類同時完成乙個動作

animal *p

[10];

for(int i=0;i<100;i++)

多型性polymophism->繼承
dog d,*pd;

animal a,*pa;//pa可指dog類,因為animal是dog基類

pa=pd;

pa->move();//animal move

位址呼叫函式為a->b(),普通物件呼叫函式為a.b();

乙個多型實現的例子
void recognize(animal * pa)//recognize函式根據不同的動物指標pa來實現跑和叫,當然跑和叫函式需要在不同動物型別下具體定義

animal *pselect[10];//例項化10個動物

for(int i=0;i<10;i++)//10個動物依次跑和叫

virtual void

print();

circleptr=&c;

circleptr->print();

純虛函式,派生類中必須重新定義

virtual void

print()=0;

C 語法筆記

只對建構函式起作用,用來抑制隱式轉換。template class printit template void print const elemtype elem,char delimiter n private ostream os here is our modified program int...

C 語法筆記

表 3 5 轉義序列 產生的字元 字元的 unicode 值 單引號 0x0027 雙引號 0x0022 反斜槓 0x005c 0空 0x0000 a警告 產生蜂鳴 0x0007 b退格 0x0008 f換頁 0x000c n換行 0x000a r回車 0x000d t水平製表符 0x0009 v垂...

C 學習筆記1 基本語法

在 c 中,有些識別符號在 的上下文中有特殊的意義,如 get 和 set,這些被稱為上下文關鍵字 contextual keywords 下表列出了 c 中的保留關鍵字 reserved keywords 和上下文關鍵字 contextual keywords 保留關鍵字 abstract asb...