C++习题二——字符串变量;内联函数;动态分配内存空间
2021-03-24 16:25:13 Author: www.freebuf.com(查看原文) 阅读量:161 收藏

修改以下程序,并给出正确代码及运行结果(截图):
(1)输出3,5,7中的最小值
错误代码:
image.png
修改结果:
image.png
(2)求一个数的平方,并输出打印
错误代码:
image.png
修改结果:
image.png
image.png
(3)函数重载求解两数之和
错误代码:
image.png
修改结果:
image.png

(1)程序1:掌握const的使用方法,可以保证数组carray1的值不被破坏。
代码:
image.png
结果:
image.png
(2)程序2:观察输出,引用与所引用的目标对象使用相同的存储空间
代码:
image.png
结果:
image.png

(1)从键盘输入两个string变量,将它们拼接后输出,并输出较大者的值。
image.png
(2)编写一个内联函数用于求3个数中的最大数。
没有用内联函数:
image.png
用内联函数:
image.png
image.png
(3)设计一个智能加法器,该加法器可以求两个数之和,三个数之和。当输入零个数时返回零,一个数时返回该数本身的值。(分别以重载函数和带默认参数的函数实现)

默认参数:
image.png
当输入零个数时返回零
image.png
一个数时返回该数本身的值
image.png
输入两个数
image.png
输入三个数
image.png
重载函数:
image.png
image.png
当输入零个数时返回零
image.png
一个数时返回该数本身的值
image.png
输入两个数
image.png
输入三个数
image.png
(4)用new运算符从堆中获取一个整型数组(数组长度由用户输入),赋值并打印。
image.png
image.png

4.1.字符串变量

C++除了可以使用C语言提供的字符型变量和字符型数组外,还提供了字符串类。这种类可以定义字符串对象。在文件开头必须包含string库:
#include <string>

字符串变量的输入输出
string c1;
cin >> c1;
cout << c1;
字符数组的输入 :
(1)单个元素输入输出
(2)字符数组整体输入输出
字符串运算、比较:
可以使用==,!=,>=,<= 来进行字符串的比较
字符串数组:
也可以直接定义字符串数组
string name [4] = {“张三”,”李四”,”王五”,”刘六”};
name [0] = “张三”;
name [1] = “李四”;
name [2] = “王五”;
name [3] = “刘六”;
对于字符串数组,注意以下几点:
字符串数组中每个元素相当于一个字符串变量;
不要求每个字符串元素具有相同的长度,每个元素长度可变;
字符串数组与字符数组元素的区别;
字符串元素不包括’\0’;
字符串数组中,每个字符串变量中存放字符串的指针
(系统为每个字符串变量分配相同大小的空间)

4.2.内联函数

内联函数:
在编译时将所调用函数的代码嵌入主函数中,这种嵌入到主函数中的函数称为内联函数。
在声明一个函数时,加上限定词inline。编译时,系统将调用此函数的地方用函数的原代码替换,即以空间代价换取时间。
关于内联函数的说明
(1)内联函数的函数体限制:
内联函数中,不能含有switch和循环。
递归函数不能用来做内联函数。
(2)内联函数只适合于1-5行的小函数;
(3)类结构中所有在类内部定义的函数,都是内联函数。

4.3.动态分配内存空间

C语言中,用两个函数malloc(size)/free来实现内存管理。
C++提供了更为强大的运算符new/delete,来代替这两个函数。
分配内存空间:new 类型;
回收内存空间:delete 指针变量;
new用法:
1、开辟单变量地址空间
(1)new int; //开辟一个存放整数的存储空间,返回一个指向该存储空间的地址。
(2)int *a = new int(5);//将一个int类型的地址赋值给整型指针a,同时将整数赋值为5
2、开辟数组空间
一维: new int[100]; //开辟一个大小为100的整型数组空间
二维: new int[5][6];//开辟一个二维整型数组空间,大小为5*6
一般用法: new 类型 [初值]
new和malloc的比较:
使用new较之使用malloc()有以下的几个优点: (1)new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。 
(2)自动地返回正确的指针类型,不用进行强制指针类型转换。 
(3)可以用new对分配的对象进行初始化。
(4)不用使用头文件声明(stdlib.h),更简洁。
delete用法:
1、int *a = new int;
delete a; //释放单个int的空间
2、int *a = new int[5];
delete [] a; //释放int数组空间


文章来源: https://www.freebuf.com/articles/others-articles/267330.html
如有侵权请联系:admin#unsafe.sh