30天学会C语言: Day 26-变数住哪里

变数 & 记忆体

变数的内容储存於记忆体中,记忆体就像是有很多格子的柜子,每格都会有一个编号,这个编号通常用16进位表示

每格只能储存一个位元,所以一个变数会占用很多格,而且会在连续的位置上;以一个 char 变数来说,它占用8个位元,所以记忆中会有一个连续8格的区域属於这个变数,如果第一个位元从位置0开始,记忆体中位置0~7属於这个变数

因为每个型别需要的位元数量是固定的,所以只要有某变数第一个位元的位置,就可以控制整个变数

指标(Pointer)

变数在记忆体中的 地址 ,也就是变数第一个位元在记忆体中的位置

取址运算子

取址运算子是 &,可以取得某变数的指标,因为指标本身也是数字,所以可以用 printf() 显示出来,预留位置 %p 用於显示指标

#include <stdio.h>
#include <stdlib.h>

int main(){
    int x = 10;
    printf("%p\n", &x);

    return 0;
}

指标变数

因为指标也是数值,所以可以用变数储存
宣告指标变数,要在变数名称之前加上 *

#include <stdio.h>
#include <stdlib.h>

int main(){
    int x=10;
    int *p=&x;
    printf("%p\n", &x);
    printf("%p\n", p);
	
    return 0;
}

因为 p 储存 x 的指标,所以 p 指向 x

取值运算子

取值运算子 * 可以取得某个指标变数指向的值

#include <stdio.h>
#include <stdlib.h>

int main(){
    int x=10;
    int *p=&x;
    printf("%d\n", *p);

    return 0;
}

因为 p 指向 x ,所以对 p 取值会得到 x 的变数值
在这个例子中,*p 等同 x


<<:  Day 27 Redux 接入 component

>>:  Day_30:让 Vite 来开启你的Vue之 内牛满面 的 完赛感言

iOS APP 开发 OC 第九天,Socket之一

tags: OC 30 day 先说说看Socket是什麽? 两个电脑通讯的过程,就像两个人打电话一...

Day 29 - 计算均线资料

本篇重点 在SQLite的Table中,新增栏位 透过pandas.DataFrame.rollin...

NNI安装在本机(Windows版)

说了好几天的概念,再不动手真的会睡着。让我们先来本机炸一炸,加深我们的学习动机。 安装前,先注意两大...

[Day-2] 探索Dev C++

我今天要来记录探索Dev C++的过程 还有C++的基本架构 我所使用的开发环境是Dev C++ 上...

[Lesson23] Kotlin - 回圈

while 回圈 Kotlin 的 while 回圈跟 Java 一样,每一次的循环之前会检查条件式...