【摘要】 一、
对全局变量检测增强对函数检测增强,参数类型检测,返回值检测,传参个数检测对类型转换增强,malloc返回值为void,c可以不用转换,C++要转换对struct增强,c中struct不可以有函数方法,并且调用时必须使用struct关键字,而c++中可以加入函数方法,并且在调用时可以不加struct关键字。对bool类型进行增强,c中没有bool类型,c++中有b…
一、
- 对全局变量检测增强
- 对函数检测增强,参数类型检测,返回值检测,传参个数检测
- 对类型转换增强,malloc返回值为void,c可以不用转换,C++要转换
- 对struct增强,c中struct不可以有函数方法,并且调用时必须使用struct关键字,而c++中可以加入函数方法,并且在调用时可以不加struct关键字。
- 对bool类型进行增强,c中没有bool类型,c++中有bool类型,且c++bool类型下,非0为真,0为假,bool类型的大小为1(sizeof(bool)=1)
- 三目运算符增强,c语言中三目运算符返回的为值,而c++中返回的是变量。
二、
const检测增强:
1.全局变量const无论c还是c++都不可以更改。
2.对于局部变量const,C语言中的const是伪变量,可以通过int* p = (int*)&m_B;*p = 100;
的方式进行更改,原因是c语言为其分配了内存;C++的const并没有被分配内存,在内部以符号表键值对形式存在无法通过int* p = (int*)&m_B;*p = 100;
的方式进行更改。
但是在用普通变量或者是自定义类型定义const变量时,会分配内存。
3.c语言中const 默认外部链接,在外部文件中可以不用加extern;但是在c++中,默认为内部链接,在外部文件中必须带有extern关键字来提高作用域。
三、能用const就不要用#define
1.const 有类型,可进行编译器类型安全检查,#define无类型,属于预处理,编译器不可以对其进行类型检查
2.const 有作用域,而#define不重视作用域,默认定义出到文件尾,如果定义在指定作用域下的有效变量,只能用const
c语言和c++语言的对比:
C语言:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//1全局变量检测增强
int a;
int a = 10;
//2.函数检测增强,参数类型增强,返回值检测增强,函数调用参数检测增强
int getRectS(w, h)
{
}
void test01() {
getRectS(100, 100, 100);
}
//3.强制类型转换增强
void test03() {
char* p = malloc(sizeof(64));
}
//4.struc增强
struct Person
{
int m_Age;
//void plusAge();//c语言不可以在struct中加入函数
};
void test04()
{
struct Person p1;//c语言使用的时候必须加入struct关键字
}
//5.bool类型增强
//bool flag;
//6.三目运算符增强
void test06()
{
int a = 10;
int b = 20;
printf("res=%d",a > b ? a : b);
}
int main() {
test06();
system("pause");
return EXIT_SUCCESS;
}
c++语言:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
//全局变量检测增强
//int a;
int a = 10;
//2.函数检测增强,参数类型增强
int getRectS(int w, int h)
{
return w * h;
}
void test01()
{
getRectS(100, 100);
}
//3.强制类型转换增强
void test03() {
char* p = (char*)malloc(sizeof(64));
}
//4.struc增强
struct Person
{
int m_Age;
void plusAge() {
m_Age++;
}//c语言不可以在struct中加入函数
};
void test04()
{
Person p1;//c语言使用的时候必须加入struct关键字 p1.m_Age = 10;
p1.plusAge();
cout << p1.m_Age << endl;
}
//5.bool类型增强
bool flag = true;
void test05()
{
cout << sizeof(bool) << endl;
cout << flag << endl;
flag = false;
cout << flag << endl;
flag = 100;
cout << flag << endl;
}
//6.三目运算符增强
void test06()
{
int a = 10;
int b = 20;
(a < b ? a : b) = 100;//可以对三目运算符进行赋值
cout << "a=" << a << endl;
cout << "b=" << b << endl;
}
int main() {
//test04();
//test05();
test06();
system("pause");
return EXIT_SUCCESS;
}
文章来源: blog.csdn.net,作者:Atlasugar,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_40331078/article/details/116560931