1. C++中’a’与”a”的区别?
‘a’只能存放一个字符
“a”相当于一个字符数组,每个字符元素为单个字符,而且最后添加转义字符’\0’作为字符串数组的结尾。
图示如下:
2. C++中数组与结构体的异同点?
C++中的结构体只是为了兼容c而保留的,在C++里完全可以使用类来代替结构体。在类中使用结构体实际就是内部类的问题。把结构体看成一个没有成员函数的类。
就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型。第二,相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为赋值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同。
数组的本质是使用数组名作为常量指针。一旦您把第一个元素的地址存储在 p 中,您就可以使用 *p、*(p+1)、*(p+2) 等来访问数组元素。
下面的实例演示了上面讨论到的这些概念:
- #include <iostream>
- using namespace std;
- int main ()
- {
- // 带有 5 个元素的双精度浮点型数组
- double balance[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};
- double *p;
- p = balance;
- // 输出数组中每个元素的值
- cout << "使用指针的数组值 " << endl;
- for ( int i = 0; i < 5; i++ )
- {
- cout << "*(p + " << i << ") : ";
- cout << *(p + i) << endl;
- }
- cout << "使用 balance 作为地址的数组值 " << endl;
- for ( int i = 0; i < 5; i++ )
- {
- cout << "*(balance + " << i << ") : ";
- cout << *(balance + i) << endl;
- }
- return 0;
- }
结果为:
注意:上例中用双浮点型指针类型声明的变量将来指向的数据类型一定是双浮点型数据。
3. C++中特殊的常量——转义字符,它有什么用呢?
首先常用转义字符对应的功能如下:
说白了,转义字符就是相当于用简洁的字符来代替某一些操作,例如:
- 我要向换行,我有如下格式:
- 1.std::cout<<"hello world!"<<std::endl;
- 2.std::cout<<"hello world!\r\n"; // \r\n代表了先把输出位置移到该行的最开头,再进行换行操作,其功能与endl相同
我编写了一个实例程序,来展示一些转义字符的作用:
- #include <iostream>
- #define cost 90 // C++中常用“const int cost=90”const常量来定义数据,该行代码是沿用了C语言中的宏定义结构
- // const类型数据必须在声明的同时进行赋值,否则报错,而且在整个程序中不可修改const类型变量的值!
- int main()
- {
- std::cout << "Hello World!\n";
- short number = 9;
- std::cout << "张三买了的苹果数量是\\b=\'" << number << "\'斤\n";
- // /n的作用是换行,因此\r\n起到了在下一行开头再次输出的作用
- std::cout << "张三共花费了\\n=\'" << cost * number << "\'元\a\r"; // \r的作用是输出位置回到开头
- std::cout << "\"!\"\b";
- std::cout << "程序结尾!"; // \b转义字符将输出位置右移一位
- }
大家会发现,其中有些转义字符为‘\c‘这种类型的,但是我如果需要’\n‘这个字符串该如何表示呢?
‘\\n‘可以解决这个问题。’\\n’的作用就是\+\n输出\之后的东西。用这种方法我们可以解决如下问题:
- “cout<<"我期末开始考了"50分",而且我居然是前几名!"<<endl;”,大家在这句话中看出问题了吗?
- "我期末开始考了"这是第一对双引号包含的内容,",而且我居然是前几名!"是第二对双引号包含的内容,还有一段不可识别的字符——50分
- 那我想要显示出“我期末开始考了"50分",而且我居然是前几名!”这段字符串怎么办呢?
- 我们可以用'\"'来在字符串中显示出",我们只需要把程序稍作修改即可:
- cout<<"我期末开始考了\"50分\",而且我居然是前几名!"<<endl;
总结:
我们要了解由于转义字符的存在我们无法表示向‘\n‘这种字符串,系统已经默认他有了相关的功能,那我们应该怎么办呢?
\+\n即可实现在屏幕中输出\n的效果。
用此功能,我们实现了“X”X“X“输出,即实现了双引号中嵌套双引号的操作。