每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>

using namespace std;

int main()
{
int var1;
char var2[10];

cout << "var1 变量的地址: ";
cout << &var1 << endl;

cout << "var2 变量的地址: ";
cout << &var2 << endl;

return 0;
}

结果:

1
2
var1 变量的地址: 0x61fe1c
var2 变量的地址: 0x61fe12
阅读全文 »

C++ 提供了以下两种类型的字符串表示形式:

  • C 风格字符串
  • C++ 引入的 string 类类型
阅读全文 »

C++中函数是不能直接返回一个数组的,但是数组其实就是指针,所以可以让函数返回指针来实现。

1
2
3
4
5
int * myFunction()
{
.
.
}

注意:C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。

阅读全文 »

C++ 中可以通过指定不带索引的数组名来传递一个指向数组的指针。

C++ 传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址。

如果想要在函数中传递一个一维数组作为参数,必须以下面三种方式来声明函数形式参数,这三种声明方式的结果是一样的,因为每种方式都会告诉编译器将要接收一个整型指针。同样地,也可以传递一个多维数组作为形式参数。

方式1

形式参数是一个指针:

1
2
3
4
5
void myFunction(int *param)
{
.
.
}

方式2

形式参数是一个已定义大小的数组:

1
2
3
4
5
void myFunction(int param[10])
{
.
.
}

方式3

形式参数是一个未定义大小的数组:

1
2
3
4
5
void myFunction(int param[])
{
.
.
}
阅读全文 »

数组名是指向数组中第一个元素的常量指针。

声明:

1
double runoobAarray[50];

runoobAarray 是一个指向 &runoobAarray[0] 的指针,即数组 runoobAarray 的第一个元素的地址。
因此,下面的程序片段把 p 赋值为 runoobAarray 的第一个元素的地址:

1
2
3
4
double *p;
double runoobAarray[10];

p = runoobAarray;

使用数组名作为常量指针是合法的,反之亦然。因此,*(runoobAarray + 4) 是一种访问 runoobAarray[4] 数据的合法方式。使用 *p、*(p+1)、*(p+2) 等来访问数组元素。

阅读全文 »

C++ 支持多维数组。多维数组声明的一般形式如下:

1
type name[size1][size2]...[sizeN];

例如,下面的声明创建了一个三维 5 . 10 . 4 整型数组:

1
int threedim[5][10][4];
阅读全文 »

C++ 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。

所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。

阅读全文 »

函数是一组一起执行一个任务的语句。每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。

C++ 标准库提供了大量的程序可以调用的内置函数。例如,函数 strcat() 用来连接两个字符串,函数 memcpy() 用来复制内存到另一个位置。

阅读全文 »

循环语句

  • while 循环
  • for 循环
  • do…while 循环

break 语句 终止循环或 switch 语句,程序流将继续执行紧接着循环或 switch 的下一条语句。
continue 语句 告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。

while循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;

int main ()
{
// 局部变量声明
int a = 10;

// while 循环执行
while( a < 20 )
{
cout << "a 的值:" << a << endl;
a++;
}

return 0;
}
阅读全文 »

强制转换运算符是一种特殊的运算符,它把一种数据类型转换为另一种数据类型。强制转换运算符是一元运算符,它的优先级与其他一元运算符相同。

大多数的 C++ 编译器都支持大部分通用的强制转换运算符:

1
(type) expression 

其中,type 是转换后的数据类型。

C++强制转换运算符

c++ 有四种显示类型转换,分别为 static_cast, dynamic_cast, const_cast, reinterpret_cast

阅读全文 »

.(点)运算符和 ->(箭头)运算符用于引用类、结构和共用体的成员。

点运算符应用于实际的对象。箭头运算符与一个指向对象的指针一起使用。

实例:

1
2
3
4
struct Employee {
char first_name[16];
int age;
} emp;

(.)点运算符

下面的代码把值 zara 赋给对象 empfirst_name 成员:

1
strcpy(emp.first_name, "zara");

(->)箭头运算符

如果 p_emp 是一个指针,指向类型为 Employee 的对象,则要把值 zara 赋给对象 p_empfirst_name 成员,需要编写如下代码:

1
strcpy(p_emp->first_name, "zara");

sizeof 是一个关键字,它是一个编译时运算符,用于判断变量或数据类型的字节大小。

sizeof 运算符可用于获取类、结构、共用体和其他用户自定义数据类型的大小。

使用 sizeof 的语法如下:

1
sizeof (data type)

其中,data type 是要计算大小的数据类型,包括类、结构、共用体和其他用户自定义数据类型。

实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;

int main()
{
cout << "Size of char : " << sizeof(char) << endl;
cout << "Size of int : " << sizeof(int) << endl;
cout << "Size of short int : " << sizeof(short int) << endl;
cout << "Size of long int : " << sizeof(long int) << endl;
cout << "Size of float : " << sizeof(float) << endl;
cout << "Size of double : " << sizeof(double) << endl;
cout << "Size of wchar_t : " << sizeof(wchar_t) << endl;
return 0;
}

结果,结果会根据使用的机器而不同:

1
2
3
4
5
6
7
Size of char : 1
Size of int : 4
Size of short int : 2
Size of long int : 4
Size of float : 4
Size of double : 8
Size of wchar_t : 4

C++ sizeof 运算符

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C++ 内置了丰富的运算符,并提供了以下类型的运算符:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 杂项运算符
阅读全文 »

存储类定义 C++ 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。

C++ 程序中可用的存储类:

  • auto
  • register
  • static
  • extern
  • mutable
  • thread_local (C++11)

从 C++ 17 开始,auto 关键字不再是 C++ 存储类说明符,且 register 关键字被弃用。

阅读全文 »

C++ 允许在 charintdouble 数据类型前放置修饰符。修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求。

下面列出了数据类型修饰符:

  • signed
  • unsigned
  • long
  • short

修饰符 signedunsignedlongshort 可应用于整型,signedunsigned 可应用于字符型,long 可应用于双精度型。

修饰符 signedunsigned 也可以作为 longshort 修饰符的前缀。例如:unsigned long int

C++ 允许使用速记符号来声明无符号短整数或无符号长整数。可以不写 int,只写单词 unsignedshortunsignedlongint 是隐含的。

阅读全文 »