1. 关于int main(int argc, char **argv)
argc
指的是argument counter,它用来统计程序运行时发送给main函数的命令行参数的个数,默认为1;
argv
指的是argument vector,它用来存放指向的字符串参数的指针数组,每一个元素指向一个参数。
各成员含义如下:
argv[0]
指向程序运行的全路径名
argv[1]
指向在DOS命令行中执行程序名后的第一个字符串
argv[2]
指向执行程序名后的第二个字符串
argv[3]
指向执行程序名后的第三个字符串
2. _int64 指8个字节长度的int:
sizeof(__int64)=8;
sizeof(int)=4;
3. typedef:它可以为类型取一个新的名字
typedef int Rank;
在这个类型定义之后,标识符Rank
可作为类型 int
的缩写,例如:Rank a=1;
4. 位移运算符<<,>>
<<是左位移运算符,左操作数的值向左移动右操作数指定的位数。
int a=1; a=a<<1或a<<=1;//a=2
5. 指针变量:保存另一个变量地址的变量。
int *p; //表示定义了一个指针变量p,该指针变量保存的地址中存储的是一个整型数
为指针赋值有两种方法:
- 把某一变量的地址赋给指针变量(&为取地址运算符,一元运算符;空指针为NULL)
int *p; int x; p=&x; int *p2=NULL;
- 将一个指针变量赋给另一个指针变量
int x=1,y=2,*p1=&x,*p2=&y; p1=p2;
指针变量的访问: *为取指针指向的值的运算符,一元运算符
int x=3; int *p=&x; cout<<*p;//3
通配指针类型void可以和任何类型的指针相互赋值
void *p
常量限定符const(const在哪个语法单位前,限制的就是哪个部分)
const int *p=&x; //限定int的值x不能改变(指向常量的指针)
int *const p=&x //限定p的值不能改变(指针常量)
const int *const p=&x //p和x都不能变
数组名是一个指针,且是一个指针常量
int array[10]={1,2,3,4,5,6,7,8,9}; cout<<*array //1
cout<<*(array+1) //2
动态变量
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函数)
void swap(int *a, int *b){ int c=*a;
*a=*b;
*b=c;
(让函数返回两个解)
void func(int a, int *b, int *c); int a,x,y; func (a, &x, &y)
8、引用类型
int i; int &j=i;//j和i用的是同一个地址,获得了指针的效果
引用传递(swap函数)(c++内置函数和这种算法相似)
void swap(int &a,int &b){ int c=a; a=b; b=c;}
6. C风格字符串和string
//C风格字符串已'\0'结尾
char str1[6]={'h','e','l','l','o','\0'};
char str2[6]="hello";
char *str3=str2;
const char *str4="hello";
//C++风格没有'\0'
string str5="hello";
//相互转换
string->const char *:str4=str5.c_str();