cpp基础5

1.数组

1.声明

数组开辟的内存地址是连续的
一维数组

int a[3];//已经开辟内存默认都是 0
int a[3] = {1, 2, 9};
int a[] = {1, 2, 9};

二维数组

int a[2][3];//已经开辟内存默认都是 0
int a[2][3] = {1, 3, 4, 2, 12, 32};
int a[][3] = {1, 3, 4, 2, 12, 32};//3位置不能省略
int a[2][3] = {{1, 3, 4} {2, 12, 32}};//标准写法

2.数组函数参数

作为函数参数传递的是地址

int add(int a[]){
//可以改变 a 里的值
}

void main(){
    int a[] = {1, 3, 4};
    add(a);
}

3.对象数组

自定义数据类型数组,对象、结构体等

//调用有参数的构造函数
Name A[2] = {Name(2, 3), Name(1,2)};
//默认初始化调用 {Name(), Name()}
Name A[2];

2.指针

地址:地址编码的最基本单位是字节,每个字节由8个二进制位组成,每个字节是基本的内存单元有一个地址。

1.取内存数据

1.变量名
变量名是地址的别名,可得到地址,直接取数据(int a; &a)
2.地址
可以直接取内存数据
3.指针
指针里存放的是地址,再通过地址找数据,属于间接取数据(int *p; *p)

2.指针类型

指针可以指向任意数据类型。
1.声明:int *p;
2.声明指针类型时信息

  • 类型需要的内存空间 int
  • 限定了此类型能进行哪些运算操作 int char…
  • 指针地址里有很多数据,根据不同数据的长度去取,取出后在强制转换成特定的类型

* 和 &

1.声明语句
int *p;
int *p = &a;

int a = 5;
int *p;//声明是一个指针
int *p = &a;

int &b;//声明引用不行

2.执行语句
*p = a;
p = &a;

int a = 5;
int *p;
*p = a;//执行地址内容
p = &a;//&取地址

3.野指针
int *p; 随机分配一个地址给 p
*p; 按照int类型长度为4字节,取 p 地址的内容,野指针不一定取的是什么

避免野指针:int *p = 0;

4.void指针
指针就是存放地址的,内存是固定的 1 字节,

3.指针运算

int *p;//int 类型占4个字节
p++; p+1; //p向后移动4个字节

short *s;//short 类型栈2个自己
s++; s+1;//s 向后移动两个字节长度
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《C++ Primer(第五版)》是一本深入浅出、权威全面的C++教程,并且非常适合初学者。这本书以系统的方式介绍了C++语言的基础知识,包括语法、数据类型、控制结构等。通过大量的实例和练习,读者能够更好地理解C++的概念和应用。 这本书的第五版是经过完全修订和更新的,以跟上C++11、C++14和C++17的最新标准。它包含了对新特性的详细解释,例如自动类型推导、lambda表达式、增强的类型检查等等。同时,书中还介绍了C++标准库和常用的编程技巧,如字符串处理、容器、迭代器等,以帮助读者更好地应用C++语言进行程序开发。 《C++ Primer(第五版)》的特点之一是它的逻辑性和结构性。每个章节都按照逐步深入的方式呈现,从基本概念开始,然后逐步引入更高级的内容。每个概念都配有大量的例子和实践题目,读者可以通过反复实践来巩固和加深对知识的理解。 此外,这本书还有一个非常有用的附录和索引,方便读者查找和理解C++语言中的各种概念和特性。 总的来说,如果你想系统学习和掌握C++编程语言,我强烈推荐你阅读《C++ Primer(第五版)》。它的全面性和权威性能够帮助你建立牢固的编程基础,并且对于学习其他高级主题和应用也提供了很好的引导。无论你是初学者还是有一定编程基础的人,这本书都能够帮助你进一步提升自己的C++编程能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值