//头文件 g++ my.cpp g++ my.c 以.c .cc .cpp后缀为结尾的c++文件都使用 g++编译
include <iostream>
//命名空间
using namespace std;
int main(){
//打印语句
cout <<"hello wolrd\n";
return 0;
}
1.编译步骤
预处理: g++ -E
编译: g++ -S
汇编: g++ -c
链接: g++ *.o
int a=10;
int &b=a;
printf(%d %d,a,b)
void exchange(int &a, int &b)//引用传参
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
int main()
{
int m = 10;
int n = 20;
exchange(m,n);
return 0;
}
概念,函数名相同,函数的参数和个数不同就叫函数的重载;
/*===============================================
* 文件名称:overLoad.c
* 创 建 者:
* 创建日期:2024年01月15日
* 描 述:函数重载:
* 函数名相同,函数参数个数和类型不同
================================================*/
#include <stdio.h>
int add(int a){
return a+a;
}
//函数名相同,函数参数个数不同
int add(int a,int b){
return a+b;
}
int add(int a,int b,int c){
return a+b+c;
}
// 函数名相同类型不同
char add(char a){
return a+'b';
}
int main(int argc, char *argv[])
{
char a=1;
printf("%d\n",add(10));
printf("%d\n",add(10,20));
printf("%d\n",add(10,20,30));
printf("%d\n",add('2');
//printf("%d\n",add(1));
return 0;
}
用于管理函数名、变量名及类。
语法:
namespace A{
int i=10;
}
调用:
方式一
A::i;
printf("%d\n",A::i);
方式二:
using namespace A;
printf("%d\n",i);
语法:
namespace A{
void print(){
printf("hello wolrd\n");
}
}
调用:
A::print();
方式二:
using namespace A;
print();
/*===============================================
* 文件名称:struct.cpp
* 创 建 者:
* 创建日期:2024年01月15日
* 描 述:
================================================*/
#include <iostream>
using namespace std;
struct stu{
int age=18;
void setAge(int val);
//类型可以是函数
int getAge(){
return this -> age;
}
};
//::作用域访问符
//结构体外部定义成员函数
void stu::setAge(int val){
this->age=val;
}
int main(){
struct stu s;
//打印结构体成员变量
cout << s.age << endl;
s.setAge(20);
cout << s.getAge() << endl;
return 0;
}
1.变量的作用域
1)局部域
void fun()
{
int i = 123;//局部变量
}
2)全局域
int a = 0;//全局域
int main()
{
}
3)函数原型作用域
void fun(int a);//a:函数原型作用域
4)名字空间域
namespace A{
int i = 321;//名字空间域
void prnmsg()//名字空间域
{
cout << "i=" << i << endl;
}
}
5)类域
class Demo{
public:
void setval(int v)//类域
{
val = v;
}
private:
int val;//类域
};
2.函数的作用域
可以是类域,也可以是全局域,还可以是名字空间域,但是不能为局部域
3.链接性(linkage)
描述了名称如何在各个单元中的共享。
1)外部链接:是指名称可以在文件间共享 例如:全局变量和全局函数是外部链接
2)内部链接:名称仅仅能在一个文件中的函数共享 例如:static的全局变量和static的全局函数是内部链接
4.变量的链接性和存储性
存储类型 作用域 链接性
auto 模块内 空
register 模块内 空
extern 文件 外部
static全局 本文件 内部
static局部 模块内 空
5.函数的链接性
内部链接:static函数
外部链接:全局函数
6.语言链接性(在c++文件中使用c文件中的函数)
1.new/delete
//变量
eg1:
int *p = new int;//在堆区给int变量申请空间
*p = 123;
delete p;//释放堆区空间
//结构体
eg2:
struct test{
};
struct test *p = new struct test;
delete p;
2.new [] /delete []
//数组
eg:
char *p = new char [16];//在堆区申请 char [16]的空间
strcpy(p,"hello world");
delete [] p;//释放堆区空间