【C++/2023年10月1日】

【黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难】 https://www.bilibili.com/video/BV1et411b73Z/?p=47&share_source=copy_web&vd_source=1cc941c8f5681d0ce0140c7d0f5bf5d3

默认情况下输出一个小数,会显示6位有效数字
float4字节/double8字节/int4字节
char赋值用单引号
(int)ch字符型对应ASCII码(a97、A65)
\t水平制表符:加起来八个自动补空格(对齐的效果)
string str=“hello”; #include /char str[]=“hello”;
布尔bool类型1字节
数据的输入:cin>>变量
小数可以相除
取模运算不可都是小数
后置递增a++会先运算再加1

产生每次不一样的随机数:
#include ;
srand((unsigned int)time(NULL));
int num = rand() % 100 + 1;

直接输出数组名查看数组首地址cout<<(int)arr<
看元素加上&
数组名是常量,不可以赋值

int end=sizeof(arr)/sizeof(arr[0])-1;//末尾元素下标

二维数组定义方式:
int arr[2][3]=
{
{1,2,3},
{4,5.6}
};
int arr[ ][3]={1,2,3,4,5,6};//可省略行数
sizeof(arr)//二维数组所占内存大小
sizeof(arr[0])//二维数组第一行所占内存大小

函数声明int max(int a, int b);
函数的分文件:在源文件里写上头文件#include “xx.h”
头文件里加上开头和函数声明

指针

*p解引用,找到指针指向的数据;(不是操作系统位数)32位4个字节空间,64位8个字节空间
空指针不可以进行访问,0~255系统占用

const修饰指针:
修饰指针-常量指针-指向可修改,指向的值不可改-const int *p=&a;
修饰常量-指针常量-指向不可修改,指向的值可改-int * const p=&a;
修饰指针和常量-都不可修改-const int * const p=&a;

指针和函数
值传递 地址传递-可改变实参的值

结构体

定义struct不可省略,创建可省略

结构体数组:struct student arr[3]=
{
{“张三”,18,100},
{“李四”,19,90}
};
可改值:arr[2].name=“王五”;

结构体指针:->:student *p=&s;p->name

结构体做函数参数:值传递(形参改变不影响实参)地址传递(改变)不想修改主函数中的数据,用值传递),反之用地址传递

结构体中的const:值传递拷贝数量太大,形参改为指针可减少内存空间,const防止误操作,void print(const student *s)

程序的内存模型

代码区:共享、只读
全局区:全局变量、静态变量、常量(“xxxxx”字符串常量)(操作系统释放)
栈区:编译器分配释放 形参、局部变量不要返回局部变量的地址
堆区:程序员控制 new:指针本质是局部变量,放在栈上,指针保存的数据放在堆区 释放:delete (new开辟数组:int *arr=new int[10];释放:delete[] arr;)

C++中的引用(本质指针常量)

引用:给变量起别名 int &b=a;//b和a同时控制一块内存
ps.引用必须要初始化,初始化后不可更改

引用做函数的返回值:不要返回局部变量的引用;若函数的返回值是引用,这个函数的调用可以作为左值

常量引用:const int &ref=10;//编译器自动修改为int temp=10;const int &ref=temp;
main函数和调用函数都改变,函数括号里形参加const调用函数里改不了值

函数高级

函数默认参数:int func(int a, int b=20,int c=30)优先用传的值
ps.b有初值,c必须有;函数声明和实现只有一个有默认参数

函数占位参数
void func(int a , int = 10)

函数重载(可让函数名相同,提高复用性)
函数参数类型、参数个数、参数顺序不同
函数的返回值不可做函数重载
引用作为重载的条件:func(a)//调用无const
func(10)//调用有const
函数重载碰到默认参数:避免

你可能感兴趣的:(C和C++,c++,开发语言)