ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

【c++】c语言入门到c++使用高手: c语言入门之指针(一)

【c++】c语言入门到c++使用高手: c语言入门之指针(一)

第九章 指针

第一节 指针基本概念详解

1. 前提知识

  • 静态存储区,动态存储区,不同变量会保存在不同的存储区里
  1. 有些变量的内存是在编译的时候分配的,有些变量的内存是在程序运行时分配的

  2. 变量都是会占用一段内存空间的(int,float,double,char占用一定内存空间,使用sizeof(类型))

#include<iostream>intmain(){printf("int size: %d\n",sizeof(int));printf("double size: %d\n",sizeof(double));printf("float size: %d\n",sizeof(float));printf("char size: %d\n",sizeof(char));return0;}

2. 地址的概念

  • 传统意义上地址:我们可以用文字例如XX市XX区XX号来找到对应地址

  • 在计算机中:是使用数字来表述地址,计算机习惯用十六进制的形式来表示地址(0x开头)

  • 总结来说,计算机中地址就是数字,代表内存中的位置

  • 严格区分地址和地址中内容的区别,程序内部会维持一张表(变量名,变量地址的值,变量类型等)

3. 直接访问和间接访问

  • 直接访问:按变量地址存取变量值

  • 间接访问:将变量的地址存在另一个内存单元中,
    在C语言中,我们一般定义int,char,float,double这些变量,我们一般用这些类型的变量来存值
    在C语言中,我们也可以定义一种特殊的变量,这种特殊的变量用来保存地址的

  • 假设我们定义了一个变量来存放变量的地址,虽然这种特殊变量是保存地址的,但也
    区分保存什么类型的地址

// 把变量i的地址保存到了mypoint // 理解成mypoint指向了i,这里所谓的指向,就是通过地址体现的 // 虽然mypoint是用来存放整型地址的,但是mypoint这种特殊变量也是需要占内存的 // 这种特殊变量mypoint一般占四个字节 mypoint =&i; // 如果我们现在要存取i的值,使用一种间接访问手段 // a) 首先我们先找到存放i的地址的这个内存位置,也就是mypoint的保存的地址 *mypoint
  • 指针变量:如果一个变量专门用来存放另外一个变量的地址,则称这个变量为指针变量

  • 指针变量的值:就是指针变量存放的值,是个地址,也叫指针

  • 区别指针变量(存放地址的变量),地址(指针)

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进