【c++学习笔记】-1 基础

头文件

#include <iostream>
#include <string>
#include "my_write.h"

一般,系统头文件用<>;自己写的头文件用""

注释

单行注释://
多行注释:/* 注释的内容 */

常量

不可更改的数据
#define 常量名 值
const 数据类型 常量名 = 值

关键字

编译器征用的标识符(int、float等)

标识符命名规则

组成:字母、数字、下划线
注意:数字不能开头,不能是关键字

数据类型

意义:在创建变量和常量时,必须指定数据类型,否则无法分配内存

整型

分类:short、int、long、long long
查看数据类型占内存大小:sizeof()

浮点型

  • 单精度float:有效数字7位
  • 双精度double:有效数字15~16位

如:4.556:有效数字是4位

字符型

ascll字码
占用字节:1
注:创建字符用单引号,如:‘b’、‘1’

转义字符

/*
转义字符:
	\n	换行
	\t	水平制表符
	\\	反斜杠
	\v	垂直制表符
*/

字符串

//char var[] = "string"
//string str = "string"

注意:双引号的字符串末尾有一个隐藏字符:‘/0’

布尔

值:true、false

运算符

  • 算数运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符

算数运算符

/*
+、-、*、/、%
++
--
*/

赋值运算符

//	=、+=、-=、/=、*=、%=

比较运算符

表达式进行比较,返回真/假

//	==、!=、<、>、<=、>=

逻辑运算符

/*
!	非	!a
&&	与
||	或
*/

程序流程结构

/*
	顺序结构
	选择结构
	循环结构
*/

跳转

/*
	break		跳出 循环
	continue	跳过 一次循环
*/

数组

内存空间连续
元素的数据类型相同

//数组定义:
int a1[32];
char a2[]="123";
int a3[5]={1,2,3};
int a4[]={1,2,3};

数组名作用:
1.整个数组所占内存长度
2.数组在内存中的首地址

二维数组

//二维数组定义方式
int arr1[2][3]={{1,1,1},{2,2,2}};
int arr2[2][3];
int arr3[2][3]={1,2,3,4,5,6};
int arr4[][3]={1,2,3,4,5,6,7};
/*
		1	2	3
		4	5	6
		7
*/

函数

/*
返回类型 函数名(参数列表)
{

}

*/

void printHello()
{
	cout<<"hello world"<<endl;
}
void printNum(int n)
{
	cout<<"输出的数字:"<<n<<endl;
}
int add(int a,int c)
{
	int d=a+c;
	return d;
}

函数默认参数

  • 左侧第一个默认参数之后,都必须是默认参数
  • 函数声明、函数实现 只能有一个有默认参数
//左侧第一个默认参数之后,都必须是默认参数
int func(int a,int b,int c=10,int d=20)
{
	return a + b + c + d;
}
//函数声明和函数实现只能有一个有默认参数
int func1(int a, int b);
int func1(int a,int b=10)
{
	return a + b;
}

int main()
{
	int a = func(2, 3);
	int b = func1(2);
	cout << a << endl;
	cout << b << endl;
	return 0;
}

占位参数

注:占位参数可以有默认值

//               占位参数
void func(int a, int)
{
	cout << "num:" << a << endl;
}
//占位参数可以有默认参数
void func1(int a, int=10)
{
	cout << "num1:" << a << endl;
}

int main()
{
	func(13, 3);
	func1(10);
	return 0;
}

函数重载

函数名称相同,提高复用性
条件:

  • 函数名相同
  • 同一个作用域下
  • 参数类型参数个数参数类型的顺序不同
void func(int a)
{
	cout << "num--1:" << a << endl;
}
void func(int a, int)
{
	cout << "num--2:" << a << endl;
}

int main()
{
	func(13);//调用第一个
	func(10,4);//调用第二个
	return 0;
}

指针

//定义:
//数据类型 * 指针变量名;
int var=10;
int *p=&var;
int *p1;
p1=&var;

指针所占内存空间:是固定值,即地址编码的长度

空指针:暂时不知道指向何处的指针

//空指针   相当于给指针变量初始化
int *p=NULL;
//*p=10   报错,不可访问

野指针:随意指向一个地址,随意的地址一般是没有访问权限的,运行会报错

int *p=(int *)0xff00;//运行会崩

const修饰指针

int v=10;
int *p=&v;//指针指向、指向的值均可修改


int * const p1 =&v;//指针指向不可更改,指向的值可以修改

const int *p2=&v;//指向的值不可修改,指向可以修改

结构体

//struct 结构体名{};
//定义:
/*
	struct 结构体名 变量名
	struct 结构体名 变量名={变量值}
*/
struct Student
{
	string name;
	int age;
	int id;
}
Student s1;
Student s2={"cat",20,12345};
Student s1[] = { {"xiaoming",12,123454},{"zzz",23,345656} };

注:结构体访问元素用“.”,指针用“->”

内存

  • 代码区:存放二进制代码,由系统管理
  • 全局区:存放全局变量、静态变量、常量
  • 栈区:局部变量、函数的参数值(相当于临时的变量)
  • 堆区:由程序员分配、释放

new

在堆区开辟数据,返回的是指针
释放用delete

int *p=new int(10);
int *p1=new int[10];//数组
//释放
delete p;
//释放数组
delete[] p1;

引用

作用:给变量起别名
语法:数据类型& 变量名=另一个变量名(相当于再起一个名字)
注意:
引用必须初始化(赋值)
引用初始化之后,不可更改

int a=10;
int& b=a;

若函数的返回值是引用,则函数可以作为左值

int& func()
{
	static int a = 10;//静态变量再全局区,程序结束后才会释放
	//int b = 10;  b是局部变量,出了这个范围就会释放
	return a;
}

int main()
{
	int& n = func();//相当于给a起别名n
	cout << n << endl;//10

	func() = 1100;//相当于给a赋值,即a=1100,
	cout << n << endl;//1100
	return 0;
}

常用

/*
int 
float
double
short

sizeof
&:取址

.
->

for 
while
if

continue
break

switch
*/


经验

函数用指针传值、引用传值时,为了防止误修改,可以用const修饰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值