【Day 25】指标介绍(中)

昨天,我们介绍了指标的一些小概念,不知道读者们是否有比较清楚指标是甚麽东西呢?(我自己在学的时候,会觉得指标好难可是好像有点有趣)
今天,就让我们继续介绍指标吧!

指标变数(pointer variable)

指标变数是一种变数,但是里面放的资料不再是我们熟悉数值(value),而是某个记忆体位址(memory address),我们也可以说,所谓的 pointer ,就是所储存的 value 是某个 memory address。
而指标变数的宣告,和一般变数宣告(variable declaration)是一样的,但在变数名称前,需要加入一个星号 *

我们可以这样宣告一个指标变数:
int *p;
int * p;
int* p;
以上的宣告是告诉编译器,储存在这个变数中的是一个记忆体位址,而在这个记忆体位址中存放的是一个 int 型态的整数。
我们也可以混合一般的变数宣告和指标变数宣告:

  • int *x,y;
  • double *p;
  • float *p;
  • char *p;

我们也可以透过下列程序码,将 variable x 的 memory address 指定给 pointer p。

int x = 38; //宣告变数x并指定初值
int *p; //宣告指标变数p储存int变数位址
p = &x; //指定指标变数p的值是变数x的位址

我们把程序完整写完并输出:

#include<stdio.h>
int main(){
	int x = 38; //宣告变数x并指定初值
	int *p; //宣告指标变数p储存int变数位址
	p = &x; //指定指标变数p的值是变数x的位址
	printf("变数x的位址 >> %p\n\n", &x);
	printf("指标变数p的值 >> %p\n\n", p);
	printf("指标变数p的位址 >> %p", &p);
	return 0;
}

从上面的例子我们可以知道,指标变数 p 除了他的值是 x 变数的位址外,他也有自己的位址
关系图会长这样:


我们可以藉着星号 * 印出指标变数里面存放位址的值。
printf("*p = %d", *p);

明天让我们来谈谈指标运算与指标阵列吧~


<<:  [NestJS 带你飞!] DAY25 - Authorization & RBAC

>>:  【设计+切版30天实作】|Day26 - Reviews区块 - 卡片可以因应不同用途而千变万化

Django #1-3 套件管理工具pip pipenv poetry

1. pip Python 原生套件管理工具 venv 虚拟环境 install python -m...

【C#】Number Random

这次我们来看到C#乱数的实务应用拉~ Random.Next()~ 它又分为三种方向~ 分别是 Ne...

LineBot - 身份验证

因为 LineBot 是利用 Line官方帐号的机制在运作,所以只要加入好友,就可以使用,我只是要自...

5.unity图片分割(Slice Sprite)、tile绘制技巧

今天的主题有两个 一、unity图片分割(Slice Sprite) 目标:把一张素材切成很多小素材...

Day25-"指标变数"

普通变数宣告後是占用某一块记忆体空间,该空间内则存放变数资料,例如:整数变数就存放整数资料,字元变数...