C++與數據結構學習總結
-
關於
int main(int argc, char **argv)
argc
指的是argument counter,它用來統計程序運行時發送給main函數的命令行參數的個數,默認爲1;
argv
指的是argument vector,它用來存放指向的字符串參數的指針數組,每一個元素指向一個參數。
各成員含義如下:
argv[0]
指向程序運行的全路徑名
argv[1]
指向在DOS命令行中執行程序名後的第一個字符串
argv[2]
指向執行程序名後的第二個字符串
argv[3]
指向執行程序名後的第三個字符串 -
_int64 指8個字節長度的int:
sizeof(__int64)=8;
sizeof(int)=4;
- typedef:它可以爲類型取一個新的名字
typedef int Rank;
在這個類型定義之後,標識符Rank
可作爲類型 int
的縮寫,例如:Rank a=1;
-
位移運算符<<,>>
<<是左位移運算符,左操作數的值向左移動右操作數指定的位數。int a=1; int a=a<<1或a<<=1;//a=2
-
指針變量:保存另一個變量地址的變量。
int *p; //表示定義了一個指針變量p,該指針變量保存的地址中存儲的是一個整型數
-
爲指針賦值有兩種方法:
. 把某一變量的地址賦給指針變量(&爲取地址運算符,一元運算符;空指針爲NULL)
cpp int *p; int x; p=&x; int *p2=NULL;
2. 將一個指針變量賦給另一個指針變量
cpp int x=1,y=2,*p1=&x,*p2=&y; p1=p2;
1. 把某一變量的地址賦給指針變量(&爲取地址運算符,一元運算符;空指針爲NULL) ```cpp int *p; int x; p=&x; int *p2=NULL; ``` 2. 將一個指針變量賦給另一個指針變量 ```cpp int x=1,y=2,*p1=&x,*p2=&y; p1=p2; ``` 2、指針變量
的訪問
*爲取指針指向的值的運算符,一元運算符
```cpp int x=3; int *p=&x; cout<<*p;//3 ```
3、通配指針類型void可以和任何類型的指針相互賦值
```cpp void *p; ```4、常量限定符const(const在哪個語法單位前,限制的就是哪個部分)
```cpp const int *p=&x; //限定int的值x不能改變(指向常量的指針) int *const p=&x
//限定p的值不能改變(指針常量) const int *const p=&x //p和x都不能變 ```
5、數組名是一個指針,且是一個指針常量
```cpp int array[10]={1,2,3,4,5,6,7,8,9}; cout<<*array //1
cout<<*(array+1) //2 ```6、動態變量
```cpp int *p; p=new int;
*p=10;//int *p=new int(10); int *a; a=new int[20];//int *a=new int[20] delete p;//回收 delete [] p;//回收 if (!p){//或if (p==NULL)或 if
(p==0) cout<<"allocation failure"; return 1;}//也可用assert(p!=0) ```
7、指針作爲形參(swap函數)
```cpp void swap(int *a, int *b){ int c=*a;
*a=*b;
*b=c; ```
(讓函數返回兩個解)
```cpp void func(int a, int *b, int *c); int a,x,y; func (a, &x, &y)
```8、引用類型
```cpp int i; int &j=i;//j和i用的是同一個地址,獲得了指針的效果 ```
引用傳遞(swap函數)(c++內置函數和這種算法相似)
```cpp void swap(int &a,int &b){ int c=a; a=b; b=c;} ```