C++ 修饰符类型
类型修饰符
可组合使用,如:unsigned long int
类型限定符
const 增加常属性
static 增加变量的生命周期,使其只有在整个程序结束时才被销毁
C++ 循环
程序按顺序执行语句,当某部分语句需要重复执行,此时可采用循环语句。
循环类型
while循环
相对for循环,while循环能够处理 循环次数未知但知道终点条件 的情况,如 输入未知长度的字符串、给出多组输入执行同一程序 等情况。
while循环执行顺序:
条件为真--执行--再次判断条件;
条件为假--执行下一条语句;整个while循环为一条语句(语句块不以分号结尾)
注意:while循环中的++i与i++导致的循环次数不同
for循环
for (表达式1;表达式2;表达式3) {
// 循环体语句
}
for 语句中的三个表达式可部分或全部省略,但两个分号不能省略。
常见的是:将表达式1放在了 for 语句之前,或表达式3放在了循环体中,在 for 语句中就可相应地省略表达式1或表达式3。
for循环用于迭代
do.......while循环
循环控制语句
break:嵌套循环时,break只会终止最内层的循环,也就是离它最近的循环
continue
无限循环
c++判断
注意:
- 一个 if 后可跟零个或一个 else,else 必须在所有 else if 之后。
- 一个 if 后可跟零个或多个 else if,else if 必须在 else 之前。
- 一旦某个 else if 匹配成功,其他的 else if 或 else 将不会被测试。
c++指针
什么是内存地址以及如何访问它?
每一个变量都有一个内存地址,内存地址是一串十六进制数。
访问变量的内存地址需要用到连字号 & ,意为取地址。
指针是一个变量,其值为另一个变量的地址。
所有指针的值的实际数据类型,不管是整型、浮点型、字符型,还是其他的数据类型,都是一样的,都是一个代表内存地址的长的十六进制数。不同数据类型的指针之间唯一的不同是,指针所指向的变量或常量的数据类型不同。
int var = 20;
int* ip; //指针声明。星号是用来指定一个变量是指针。
ip = &var; // 指针初始化。意为在指针变量中存储 var 的地址。
/*
int* ip=&var; //或者声明时就初始化
*/
cout<<*ip; // * 指解引用,得到指向的值;
C++ Null 指针
赋NULL
如何检查空指针
未初始化的指针和空指针都要避免误用
指针的算术运算
可以对指针进行四种算术运算:++、--、+、-。
指针算术运算会根据指针的类型和大小来决定移动的距离,即指针值的改变。
指针与指针之间可以进行赋值、比较操作。并且 关系比较(如 <
, >
, <=
, >=
)只有在同一数组的元素之间进行是有意义的。
C++ 指针 vs 数组
数组的名称就是数组第一个元素的常指针,但不能作为左值,即不能使用自增运算符,但可使用+、-等二元运算符。
int var[MAX] = {10, 100, 200};
int *ptr;
ptr = var;//可以进行赋值操作
一个指向数组开头的指针,可以通过使用指针的算术运算或数组索引来访问数组。
C++ 指针数组
int *ptr[MAX];
这里 由于[ ]的结合性比 * 要更强,所以ptr先与[ ]结合,表示声明为一个数组,剩下的表示数组的元素类型,即int* 指针型。
字符串字面量的地址是它本身。
#include <iostream>
using namespace std;
const int MAX = 4;
int main ()
{
const char *names[MAX] = {
"Zara Ali",
"Hina Ali",
"Nuha Ali",
"Sara Ali",
};
for (int i = 0; i < MAX; i++)
{
cout << "Value of names[" << i << "] = ";
cout << names[i] << endl;
}
return 0;
}
C++ 指向指针的指针(多级间接寻址)
指针的指针就是将指针的地址存放在另一个指针里面。
当一个目标值被一个指针间接指向到另一个指针时,访问这个值需要使用两个星号运算符。
c++引用
& (1)int *p=&b 这里指取地址,返回一个指向地址的指针;
(2)int& b=a 这里指引用,必须初始化,相当于别名,如b和a指的是同一块地址,修改b的值就是在修改a的值;