- #define常量 与宏
- define是一个预处理指令
1.define定义符号
#define MAX1000
2.define定义宏
#define ADD(x,y ) X+Y
注意第二个其实是4*2+3 宏是完成替换的
ADD被替换成2+3;也就是4*2+3
如果想得到20;
注意ADD(),不应该把x和y想象成两个普通的变量
她可能是个表达式,把x和y用()括起来,宏体(x)(y)
宏是有参数的
不需要研究太深入 - 初识指针
- 指针:,要谈指针,先谈内存,
买回来的内存,我们要使用它4g16g
我们如何使用它,现实生活中对空间的使用
我们国土面积,西安市,六号楼,找到现实生活中找到空间
我们如何找到空间的?通过地址
内存也是一样,内存是一个空间,被划分成一个一个有效的格子,我给每个格子编个号0123456,这就是内存的管理方式,这里出现了两个问题:
内存是怎样编号的? 一个这样的内存单元是多大空间?
其实我们计算机是32或64位;指的是有32根地址线,地址线是物理线,它可以通电,正电是1, 32根地址线通电后,有的电是正有负,正负电之分产生了1 0这样的信号
我们把电信号转换成数字信号:1和0组成的二进制序列
这三十根地址线,这个线产生的二进制序列的可能性
可能就是三十二个全零到三十二个全一
0000000000000000>>>>0
.......
0111111111111111>>>>>n
100000000000000 >>>>>>n+1
......
111111111111111 >>>>>>最后一个内存的编号
这时候所有可能性都罗列出来了,把这个2的32次方个二进制序列就可以作为内存的编号,这些序列都可以作为内存的编号,当这些成为一个内存的编号时,我们把这个编号称为内存单元的地址
作为编号成为地址
这就是内存单元的编号,怎么给她地址,那这样每个内存单元都给他一个地址,总共有2的三十二次方个地址,一个内存单元给她多大空间呢
bit byte kb mb gb 其实可以算
我们可以管理二的32次方个内存单元 ,一个内存单元多大,我们来分析,我们假设,一个内存单元是一比特,我们就可以管理2的32次方的比特位空间,4296967296个比特位/8= 536870912字节/1024=524288kb/1024=512mb/1024=0.5gb
我们管理的只有0.5gb,有点太小,
c语言中最小的char - 1byte -8bit-8个地址
这样是不是太浪费了,但是如果一个内存单元是一个字节,所以最终一个内存单元是一个字节,然后分配一个地址,有了这些基础,才知道内存单元是有地址的,这样我们就可以拿出内存单元的地址,拿出内存单元的编号,然后才有指针的概念.
- int a 然后怎么给a分配空 间?
我想拿出a的地址 取地址&a,取a的地址 拿出来的是第一个字节的地址,我们后面的照样都能够找的到,然后我们把他打印出来
pa = &a //pa是用来存放地址的,在C语言中pa叫做指针变量
pa的类型是什么?int* *说明pa是指针变量 int说明pa指向的对象是int类型的 ;指针变量如何创建 &是个单目操作符
有时我们通过这个地址找到a * 解引用操作符是个单目操作符
我们可以不直接改变a的值,可以通过地址间接改变,最后一个图,先找到10的地址,取最后一个44,作为p的地址,*p=20,返回等于20
- 指针就是地址,指针变量的大小
为什么是4,指针的大小是相同的,
因为指针是用来存放地址的
指针需要多大空间,取决于地址的储存需要多大空间
32位 32 bit -4byte
64位 64bit ---- 8bit
我们32位平台,里面的指针都是4,地址都是4,地址大小都一样的, 指针大小都四个字节 ,我们改成64位程序- 总结:没想到这么早就学到了指针,慢慢理解,初识指针算是理解了一点点大名鼎鼎的指针的概念,准备去报课了,我室友晚上说了一句话,天天忙忙碌碌但最后发现什么也没学到,我写博客后没有发现这种空虚感,每天都挺充实的,大一的我目标急速进大厂,学历不行,只能靠实力了,真不知道还要不要熬夜,害
- int a 然后怎么给a分配空 间?
- define是一个预处理指令
第三天常量与宏和初识指针
最新推荐文章于 2024-09-13 10:21:40 发布
这篇博客介绍了C语言中的#define预处理指令,用于定义常量和宏。作者解释了宏定义的工作原理,并通过例子展示了如何使用宏参数。此外,文章还探讨了内存管理和指针的概念,包括内存地址、内存单元的编号以及如何通过指针间接修改变量的值。最后,博主分享了自己学习指针的初步理解和对编程学习的态度。
摘要由CSDN通过智能技术生成