1,输出的差别
#include <iostream> //头文件
using namespace std; //标准命名空间
int main()
{
cout << "helloworld" <<endl; //cout标准输出,和C中的printf效果一样,<< 输出运算符,endl换行符。 这种输出的前提是加了标准命名空间
}
std::cout << "helloworld" <<std::endl; //作用域限定符,这种模式输出不建议。最好在开头加上标准命名空间省的麻烦
2,定义全局变量的区别
#include <iostream>
int g_a;
int g_a = 100; //C语言中允许重复定义多个重名的全局变量,而C++不允许
int main()
{
return 0;
}
3,结构体中的区别
#include<iostream>
struct test //C中,结构体是各种数据类型的集合,C++中,结构体是一种类型
{
};
int main()
{
struct test student; //C中结构体变量名命名,结构体占0个字节
test student; //C++中结构体变量名命名,结构体占1个字节
return 0;
}
4,子函数返回值差别
C>>>>>eg:
#include <stdio.h>
f1() //函数没有返回值,void可省略
{
printf("helloworld\n");
}
void f2() //表示能接受任意参数
{
}
void f3(void) //表示函数没有参数
{
}
int main()
{
f1();
f2(1,2,3);
f3(1,2); //传参则会报错
return0;
}
C++>>>>>eg:
#include <iostream>
using namespace std;
f1() //此处定义是错误的,函数必须要有返回值,就算无返回值也得把void写上
{
}
void f2() //这是对f1()的正确写法
{
}
void f3()
{
}
int main()
{
f1();
f2();
f3(1,2,3); //C中可以穿任意参数,而C++是不允许的,C++中相当于void f3(void);
return 0;
}
5,三目运算符
C>>>>>eg:
#include <stdio.h>
int main()
{
int a=1,b=2;
int c;
c=(a>b)?(a:b);
printf("%d\n",c); //输出结果是2(a>b判断结果 为真返回a的值,假返回b的值)
(a>b)?a:b=100; //看一下b=100,这次结果会怎么样? 在C中,显然这是一种错误的写法,(a>b)?a:b的返回值就是c为常数,怎么能够在常数之间互赋值。
}
C++>>>>>eg:
#include <iostream>
using namespace std;
int main()
{
int a=1,b=2;
int c;
c = (a>b)?a:b;
cout << c << endl; //输出值为2
c = (a>b)?a:b=100;
cout << c << endl; //这次输出c为??? 当然是100咯,在c++中,能作为左值使用。
}
6,C++函数bool
#include <iostream>
using namespace std;
int main()
{
bool a = ture;
bool b = flase;
cout << a << endl; //输出值为1;
cout << b << endl; //输出值为0;
b = 100;
cout << b << endl; //输出什么?? 1.(bool 函数输出只有两种值,1,真;2,假)
return 0;
}
7.const关键字,限定一个变量不允许被该改变。
#include <stdio.h>
int main()
{
const int a=1;
int *p = (int *)&a;
*p = 2;
printf("%d\n",a); //在C中,const定义的变量不允许被改变,但可以借用地址来改变;
输出a=2;
}
#include <iostream>
using namespace std;
/*int main()
{
const int a=1; //定义之后为a为常量,不开辟内存存储空间,放哪?存放在符号表中
int *p = (int *)&a; //进行取址操作,编译器会为其开辟4个字节的内存,并用1来填充
*p = 2;
cout << a << endl); //在C++中,const定义的变量不允许被改变,也可以可以借用地址来改变;输出a=2;
}*/
void f()
{
const int a =100;
#define B 200
}
int main()
{
f();
//cout << a << endl; //此处编译一定会报错
cout << B << endl; // 此处正确。因为a,B作用域不一样,a的作用域仅限于子函数内,B的作用域是从定义它那行命令开始
}