1、C++引入了string类
C++:当声明字符串时直接用string str = "yangzh";即可。
C语言在声明字符串时,需要用到char数组,而且需要在数组的末尾加上‘\0’来表示结束。
C语言代码:
//C语言代码
#include<stdio.h>
int main() {
char str[7] = { 'y','a','n','h','z','h','\0' };
printf("%s \n", str);
return 0;
}
C代码运行截图:
当C语言数组末尾不加‘\0’,会出现乱码,‘\0’换成‘g’,附上代码和截图如下:
//C语言代码
#include<stdio.h>
int main() {
char str[7] = { 'y','a','n','h','z','h','g' };
printf("%s \n", str);
return 0;
}
C++代码:
//C++代码
#include <iostream>
#include<string>
using namespace std;
int main() {
string str ("yangzh");
cout << str << endl;
}
C++代码截图:
2、C++与C语言在动态数组上的差异
C++:vector声明,可以不进行初始化。
当需要增加元素时,可以在数组的末尾追加元素,代码如下:
dynArray.push_back(3);
即可对数组扩容,并追加3到数组末尾。
//C++代码
#include <iostream>
#include<vector>
using namespace std;
int main() {
vector<int> dynArray(3);
dynArray[0] = 0;
dynArray[1] = 1;
dynArray[2] = 2;
dynArray.push_back(3);
cout << dynArray[3] << endl;
}
运行截图:
C语言需要使用动态分配的方法,malloc():
代码示例:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char* str;
/* 最初的内存分配 */
str = (char*)malloc(15 * sizeof(char));
strcpy(str, "runo");
printf("%s ", str);
printf("\n");
return 0;
}
运行截图:
3、C++中引入了 auto 自动推断类型:
例如下面两个语句,没有声明bool1 和age 的具体类型是bool 和int,但是使用了关键字auto
,编译器会自动去检测他们的类型。
C++代码演示:
//C++代码
#include <iostream>
#include<vector>
using namespace std;
int main() {
auto age = 21;
auto booln = false;
printf("age 所占空间大小为:%d \n", sizeof(age));
printf("booln 所占空间大小为:%d \n", sizeof(booln));
}
运行截图:
以上3点区别均是参考书籍:21天学通C++
由于刚学习C++,如存在错误的地方请提醒我更正,多谢!
C++中引入了基于范围的for()循环:
让对一系列值(如数组包含的值)进行操作的代码更容易编写和 理解
代码如下:
#include <iostream>
#include<vector>
using namespace std;
int main() {
int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
char str[5] = { 'a','b','c','d','e' };
for (auto nums : arr) {
cout << nums << " ";
}
cout << endl;
for (auto str1 : str) {
cout << str1 << " ";
}
cout << endl;
}
运行截图: