您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

《C语言从零开始单排上百强》第六章 - 指针

《C语言从零开始单排上百强》

第六章 - 函数

📃 更新记录:???

❌ 勘误记录:暂无

📌 团队名单:王亦优

🌻 特别鸣谢:鹏哥、dhlwust2007、是落拓呀

📜 本文声明:由于作者水平有限,本文难免有错误和不准确之处,本人也很想知道这些错误,恳望读者批评指正!

 

一、指针的定义

0x00 何为指针

❓ 我们先来看看定义:

指针是编程语言中的一个对象,利用地址,他的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。

📚 简单地说:指针就是地址,地址就是指针;

📌 注意事项:

      ① 指针就是变量,用来存放地址的变量(存放在之阵中的值都被当成地址处理);

      ② 一个小的内存单元大小为 1 个字节;

      ③ 指针是用来存放地址的,地址是唯一标识一块内存空间的;

      ④ 指针的大小在 32 位平台上是 4 个字节,在 64 位平台上是 8 个字节;

💬 指针的创建:

int main()
{
    int a = 10;   // 在内存中开辟一块空间
    int* pa = &a; // 使用解引用操作符&,取出变量a的地址
    // 👆 将a的地址存放在pa变量中,此时pa就是一个指针变量
    return 0;
}

❓ 什么是指针变量

💡 指针变量就是存放指针的变量,这里的 int* pa 就是一个整型指针变量,里面存放了 a 的地址;

 

0x02 指针的大小

💻 32位平台:4 bit , 64位平台:8 bit ;

💬 验证当前系统的指针大小:

int main()
{
    printf("%d\n", sizeof(char*));
    printf("%d\n", sizeof(short*));
    printf("%d\n", sizeof(int*));
    printf("%d\n", sizeof(double*));

    return 0;
}

 

二、指针的指针类型

0x00 指针类型

📚  int 型指针和 char 型指针都可以存储 a ;

int main()
{
    int a = 0x11223344;
    int* pa = &a;
    char* pc = &a;
    printf("%p\n", pa);
    printf("%p\n", pc);

    return 0;
}

🚩 运行结果:他们的运行结果是一样的

0x01 指针类型的意义

📚 指针类型决定了指针进行解引用时,能够访问的内存大小是多少;

💬 不同的指针类型,访问的大小不同:

int main()
{
    int a = 0x11223344;
    int* pa = &a; // 44 33 22 11 (至于为什么是倒着的,后面会讲。)
    *pa = 0;// 00 00 00 00
    
    char* pc = &a; // 44 33 22 11
    *pc = 0; // 00 33 22 11
    // 在内存中仅仅改变了一个字节

    // 解引用操作时就不一样了
    // 整型指针操作了4个字节,让四个字节变为0
    // 字符指针能把地址交到内存中,
    // 但是解引用操作时,只敢动1个字节

    return 0;
}

 

 

 

 

 

 

 


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进