cpp语法记录

#include

#include //意思是复制粘贴iostream到当前文件

#include它的功能就是复制粘贴

这里 ,尖括号是系统某个目录下的,自己项目中的一般是用""来匹配目录,其实都一样,这里iostream是个没有后缀名的文件,用于和C语言的库进行区分

头文件

首先了解下面一个场景

Main.cpp

#include <iostream>
int main() {
    
    
	Log("hello world!");
	std::cin.get();
}

Log.cpp

void Log(const char* message) {
    
    
	std::cout << message << std::endl;
}

上面代码Main.cpp中会报错,找不到Log,需要在Main.cpp添加Log函数的声明进行修复

Main.cpp

#include <iostream>
void Log(const char* message);
int main() {
    
    
	Log("hello world!");
	std::cin.get();
}

从上面的场景就发现在Main.cpp文件中一直需要声明,比较繁琐,那头文件就是用来做这个事情

新建文件Log.h

Log.h

#pragma once
void Log(const char* message);

其他两个文件分别为

Log.cpp

#include <iostream>
void Log(const char* message) {
    
    
	std::cout << message << std::endl;
}

Main.cpp

#include <iostream>
#include "Log.h"
int main() {
    
    
	Log("hello world!");
	std::cin.get();
}

上面发现有个#pragma once,这是用来干啥的,它其实类似下面语句的使用 ,为了预防头文件被include的时候重复定义

#ifndef XXXX
#define XXXX
void Log(const char* message);
#endif

指针

指针是一个存储变量地址的整型数,是int类型

int var = 8;
int* ptr = &var;// 取到var的指针ptr,&是取址符
*ptr = 10;// *ptr是逆向获取该指针指向变量的值

注意这里出现了三个新东西

1.int* 指针声明

2.&var取var的指针地址

3.*ptr取指向指向变量的值

引用

不占内存,就是个别名

int a = 5;
int& ref = a;// 注意这里&和指针里面的取址符&不是一个东西

注意这里出现了一个新东西

1.int& 声明引用

下面有个函数参数引用传递的案例

使用指针实现改变a的值

void test(int* value){
    
    
    (*value)++;
}
int main(){
    
    
    int a = 5;
    test(&a);
}

使用引用实现,发现简化了很多,发现引用是指针的语法糖

void test(int& value){
    
    
    value++;
}
int main(){
    
    
    int a = 5;
    test(a);
}

static

类和结构体外的static

下面代码编译的时候会报错int data 已经在main.obj中定义了

Main.cpp

#include <iostream>
int data = 10;
int main(){
    
    
    
}

Static.cpp

int data = 10;

可以改Main.cpp文件,extern关键字表示可以从外部找data变量

#include <iostream>
extern int data;
int main(){
    
    
    
}

也可以改Static.cpp文件,加上静态的话意思别的翻译单元看不见这个值了,有点类中私有变量的感觉

static int data = 10;

Class

Main.cpp

class Test{
    
    
    
}

int main(){
    
    
    Test t;// 栈上创建
    Test* t2 = new Test();// 堆上创建,返回地址,不用需要手动delete t2进行销毁
}

new关键字

表示在堆上创建对象并返回地址

TODO

猜你喜欢

转载自blog.csdn.net/qq_22849251/article/details/130485155
cpp