一、
&:取地址。 &(变量名):获取变量的地址。
*:取值。 *(变量名):将变量作为地址,到相应的地址取值。
*(&(变量名))=变量本身。
指针变量是用来存储地址的变量。(指针就是一个地址)
32位操作系统下指针所占内存空间为4字节,不管什么数据类型。
指针声明方式:指针类型 指针变量名
使用指针:指针前加,代表解引用,找到指针指向的内存中的数据。
例如:int *p;
char *name;
初始化:
int x;
int *p=&x;
空指针:指针变量指向内存中编号为0的空间。用来初始化指针变量。并且空指针指向的内存是不可
以访问的。0~255之间的内存编号是系统占用的,因此不可以访问。
野指针:指针变量指向非法的内存空间。如:int *p=(int *)0x1110;(访问野指针报错:无访问权限)
指针变量不能直接赋值。
scanf()函数后面的参数应该传入的是指针。
指针和函数:
(地址传递可以修改到实参的值,而值传递不能修改实参的值。)Swap交换两个变量,用指针。
const 修饰指针:const修饰指针,const修饰常量、const既修饰指针(常量指针),又修饰常量。(第三种情况),指针的指向和指针指向的值都不能修改。
常量指针:指针的指向可以修改,但是指针指向的值不可修改。
指针常量相反。
指针的作用:引用类型,传递地址,减少内存消耗。
指针和数组:利用指针来访问数组,int *p=arr;数组名代表数组的首地址。
二、
cin从键盘缓冲中取字符的时候会过滤掉空格、制表和回车这些特殊字符不会传给ch;
而getchar从缓冲区中读所有数据,包括回车等。
而字符串输入中,gets不接收回车。而scanf读取字符串以空格作为结束标记。在字符串输入中cin相当于sacnf也是以特殊字符结束作为标记。
getline也不接收回车符。
三、排序问题
qsort对一片连续的区域进行排序,如数组。
void qsort(基地址,元素个数,元素大小,比较函数);
int compare(当前比较元素1地址,当前比较元素2 地址);
void sort(基地址,基地址+n); 默认非递减
若需要非递增,则需加上
bool cmp(double a,double b)
return a>b;
然后使用 sort(arr,arr+n,cmp);
四、c++重载
一、函数重载
作用:函数名可以相同,提高复用性。
函数重载满足的条件:
同一作用域下(比如全局作用域)
函数名称相同
函数参数类型不同或者个数不同或者顺序不同。
注意:函数的返回值不可以作为函数重载的条件。
二、函数重载的注意事项 (原则上不能出现二义性)
1、引用作为重载的条件
void func(const int &a)
{
cout<<“OK”<<endl;
}
2、函数重载碰到默认参数
五、变量存在的意义:方便我们管理内存。 数据 类型指出合适的内存空间。
变量创建的语法:数据类型 类型名=变量初始值;
常量:用于记录程序中不可更改的数据。
c++规定在创建一个变量或者常量时,必须指出相应的数据类型否则无法给变量分配内存。
六、标识符不可以是关键字
标识符是由字母、数字、下划线构成。
标识符第一个字符只能是字母或下划线。
标识符区分大小写。
七、函数的分文件编写。
(1)、创建.h后缀名的头文件。
(2)、创建.cpp后缀名的源文件
(3)、在头文件中写函数的声明。
(4)、在源文件中写函数的定义。