iT邦幫忙

2021 iThome 鐵人賽

DAY 25
1

昨天,我們介紹了指標的一些小概念,不知道讀者們是否有比較清楚指標是甚麼東西呢?(我自己在學的時候,會覺得指標好難可是好像有點有趣)
今天,就讓我們繼續介紹指標吧!

指標變數(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);

明天讓我們來談談指標運算與指標陣列吧~


上一篇
【Day 24】指標介紹(上)
下一篇
【Day 26】指標介紹(下)
系列文
C 語言的簡單入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言