10.28

同学们好!

1kb=1024byte≈10^3byte

1mb=1024kb≈10^6byte

1gb=1024mb≈10^9byte

1tb=1024gb≈10^12byte

这些就是计算机内存的单位

然后是像long long,int之类的类型的长度:

long long:8位

int:4位

char:1位

string:32位

bool:1位

今天我们要学习的是关于指针的知识:

如图,可以看出a是一个变量

而p也是,但是应该有人会问:“这个‘p=&a’是什么意思呢?

答:&的意思就是取这个数据在电脑中的地址:0x7ffd98eec008。可是这个数又是什么东西呢?

它去掉0x之后就是一个十六进制数,0x7ffd98eec008=140727169237000

&=取地址

*=解地址

如果想把指针指向第一个(即0)的该怎么做呢?

答:int *a=&nullptr;即可

同时nullptr-t也是一个类型但是它和任何类型都不一样 只是在赋值时发生了自动类型转换。赋值时要注意:std::nullptr-t才可以对。赋值方法如下图:

接下来要讲关于临时值的知识:

下面这段代码对不对呢?

答:错。

因为a+b是一个临时值,它执行到*p=&(a+b);这里就没有了,它之后要取值的话就没有了。

同时临时值也可以叫右值,因为它一般都是出现在一个表达式的右边

那么由此也就可以推测出来:int a中的a是一个左值。

接下来要讲关于引用的知识

引用=偷懒版指针

引用的使用让我们改变指针所指的值变得方便。

c++直接交给cpu进行运行的是一种机器语言,但是c++上写的代码不可以直接运行

就需要一个叫做编译器的东西来编译(把c++翻译成机器语言)。

敲黑板!!!!!

接下来要讲关于const(常量,不可以改变)的知识:

int *const:指针指向方向不可以修改,但其值可以修改。

const int :指针不限,其指向的值不可以改变。敲黑板:int *const 必须在定义时初始化。

还有一种:const *const:指针指向方向不可以修改,其指向的值也不可以改变。const *const 也必须在定义时初始化。

思考题:

#include <cstdlib>

#include <iostream>

int main() {

const int a=100,b=100;

int *p=&b;

p=50;

std::cout<<p;

return 0;

}

下列代码是对的吗?

答:错的。因为b被const所形容,它不可以改变了。但是在p中我们却把b的值改掉了,所以我们必须向系统保证不会改这个数,否则不行。正确代码:

#include <cstdlib>

#include <iostream>

int main() {

const int a=100,b=100;

const int *p=&b;

std::cout<<p;

return 0;

}

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值