第一次學習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...