一:最简单的 hello world
include <iostream>
using namespace std;
int main(){
cout << "hello world" << endl;
return EXIT_SUCCESS; //其实就是0
}
二:cpp中使用c函数
如果想在cpp文件中使用c语言函数,需要加上如下几行(vs上需要,clion不需要。。。)
#include "pch.h"
#include <iostream>
#define _CRT_SECURE_NO_WARNINGS //1:
#pragma warning(disable:4996) //2:
using namespace std;
int main()
{
char p[]="abc";
strcpy(p,"123");
cout << p << endl;
}
三:作用域 、:: 、命名空间
using namespace std;
int value = 200;
int main(){
int value = 100;
cout << value << endl;
cout << ::value << endl; //直接使用 :: 就是全局作用域
}
100
200
- 命名空间:用来解决命名冲突的问题
命名空间中可以放:函数、结构体、变量、类
在头文件中
namespace MySpace{
void func1();
void func2();
void func3();
...
}
MySpace::func1();
- 命名空间的合并
namespace A{
}
namespace A{
}
这两个命名空间会合并为一个
四:C++中的const
c++中const不会分配内存(使用符号表,下面的情况 key=a value=10),类似于宏定义,在编译的时候直接替换,这种情况的const是无法修改的,要修改会生成临时变量。
如果写了如下代码:
const int a = 10;
int* p = (int*)&a; //这句话会为a临时开辟一块内存空间,相当于 int tmp = a; int* p = &tmp;
但如果用变量定义的const,会分配内存,这个时候就可以改
int a = 10;
const int b = a;
int* p = &b;
*p = 20;
cout << b << endl;//输出为20
const变量作为结构体或者类的成员变量时,也会分配内存
struct Person{
const int a;
}
五:extern的用法
c++中要让一个变量可以被外部访问
定义的文件中:
extern int a = 10;
使用的文件中:
extern int a;
由此可见,c++在定义和使用的文件中,都要使用extern声明外部变量
六:引用
就是起别名,主要说说和指针的区别,const引用
- 引用不是变量,所以必须初始化
- 引用初始化之后就不能修改
- 不要返回局部变量的引用
- 引用不能为 NULL
- 如果函数返回的是引用,函数可以作为左值
int& func(){
}
func() = 20;
引用的本质
在编译器中,引用是用指针常量实现的(指向常量的指针),因此引用所占空间大小和指针相同,只是这个过程是内部实现的,用户不可见。
常量引用
const int& ref = 0; //加入const后,编译器处理方式 int tmp=10; const int& ref = tmp;
但是下面这种写法是错误的
int& ref = 10; //错误