浅谈指针,内存与指针做函数参数

一、概念

1、指针==地址

指针的目的是为了进行寻址操作,找到对应的内存

2、内存

(1)虚拟内存:

实际是硬盘的一块区域

(2)物理内存:

计算机中安装的硬件内存(比如:内存条)

RAM:随机存储器,用于临时存储数据,读写速度快
    (3)虚拟内存
            内存总大小:4G
            内存单元:每个内存单元大小 节(byte)
            内存单元总数:4*1024*1024*1024
            内存块:地址空间连续的多个内存单元
            地址:每个内存单元都有一个对应的地址,
              我们称之为内存地址,而地址我们通常使用十六进制表示。
            寻址:通过地址找到对应的内存
    3、指针
        (1) 指针:实际就是地址,所以也可以说是地址值
        (2) 指针变量: 用于存储指针(地址值)的变量
        (3) 取地址:&num, 获取num变量所对应内存的起始地址
            解引用:*num, 通过指针(地址值),找到对应的内存,并获取内存中的数据
        (4) 内存中的值 - 地址值
            int num = 10;
            内存中的值 == 10;
            地址值 == #
    4、指针书写方式
        声明一个指针变量的语法: 类型* 变量名;
            int* num; --> 含义:声明了一个指针变量num,当前num所指向的内存中存储的数据是整型数据。
        指针变量的初始化: 类型* 变量名 = NULL;
    5、指针的大小
        int num;   sizeof(num) --> 4字节
        int* num;  sizeof(num) --> 32位操作系统占4字节,64位操作系统占8字节
                                   且无论何种类型的指针,大小都是这样的。
总结:指针本身不具有实际含义,只有其指向了有效内存后才有了实际意义。
指针做函数参数

核心代码

#include

#if 0

int main()
{
    //int a, b, k = 4, m = 6, * p1 = &k, * p2 = &m;
    //a = p1 == &m;
    //b = (*p1) / (*p2) + 7;
    //printf("a=%d\n", a);
    //printf("b=%d\n", b);

    return 0;
}

#endif

#if 1
运行结果

a=0;b=7.

你可能感兴趣的:(C语言)