指标可以拿来存取电脑的记忆体位址,所以,我们在使用指标变数之前,要先了解何谓记忆体位址。
我们可以把记忆体空间想像成一排大楼的信箱,每一个储存单位都拥有数字编号的位址,我们如果单纯设定变数,其实是把我们要的值放入记忆体空间里面,所以记忆体里面的值可以改变,但是记忆体位址是固定的。(可以想成一栋房子的地址是固定的,但里面住的人可以改变、可以搬家)
看个例子:
如果我们程序码写成 int X = 38;
假设这个变数会被配置於 0x7ffff34fff00 的位址
画成图来表示:
从上面的图很明显的可以知道,我们宣告了一个变数 X
,其值为 38,然後我们配置了 4 bytes 的记忆体给他(通常宣告int
需要 4 bytes)
我们可以使用 C 语言的 &
取址运算子来取得变数记忆体位址。
来看一下程序码:
#include<stdio.h>
int main(){
int x = 38;
printf("变数x的值 = %d\n", x);
printf("变数x的位址 = %p\n", &x);
return 0;
}
输出结果如下:
我们透过程序输出可以看到,变数的值与位址的差别!
还记得在第七天 C 的输入输出函式有提到 scanf()
函式,其逗号後面我们要用 &
再加上变数名称吗?
其实是因为 scanf()
函式後面必须传入地址,所以才要加上 &
去取址,但如果是传入阵列的话,就不需要用 &
(阵列其实是宣告第一个阵列位址)!
我们来看一个程序例子:
#include<stdio.h>
int main(){
int arr[3] = {0};
int i = 0;
printf("请输入一个变数 >>");
scanf("%d", arr+2);
for(i=0; i<3; i++)
printf("%d ", arr[i]);
return 0;
}
输出结果:
程序码解释:
arr[0]
)。可以看到,我们输入的变数真的被放入 arr[2]
里面了!
今天讲了指标最基本的一些小东西,但其实指标的概念还有好多好多,所以明天要继续介绍~
<<: 每日挑战,从Javascript面试题目了解一些你可能忽略的概念 - Day24
>>: 【程序】简说重构 转生成恶役菜鸟工程师避免 Bad End 的 30 件事 - 26
一页式网站 SPA SPA 全名 Single Page Applications 只有一个 HTM...
こんばんわー(U 'ᴗ' U)⑅ SONYKO 打油。 连续一周睡眠 < 5小时了,我是谁我在...
实体 所谓实体即为描述我们真实世界的物件,如员工、客户、订单皆属於实体。 在实务上的需求我们可以将实...
今天的笔记应该算是日常初阶工程师会发生的问题,以及可以怎麽去找根因的一些做法,不外乎就是下好关键字,...
在还没开始撰写程序前可以先开启WMX3 Console选取I/O 图上显示的红底0.0第一个字代表位...