1. 程式人生 > 其它 >指標常量和常量指標

指標常量和常量指標

技術標籤:C語言指標

指標常量和常量指標

理解

指標* 和 const 誰在前先讀誰 ; * 象徵著地址,const象徵著內容; 誰在前面誰就不允許改變。例如:
int const *p1 = &b; //const 在前,定義為常量指標
int *const p2 = &c; // *在前,定義為指標常量

指標常量

常量指標是指指向常量的指標,顧名思義,就是指標指向的是常量,即,它不能指向變數,它指向的內容不能被改變,不能通過指標來修改它指向的內容,但是指標自身不是常量,它自身的值可以改變,從而指向另一個常量。

常量指標

指標常量 是指指標本身是常量。它指向的地址是不可改變的,但地址裡的內容可以通過指標改變。它指向的地址將伴其一生,直到生命週期結束。有一點需要注意的是,指標常量在定義時必須同時賦初值。

Demo

#include <stdio.h>
// 指標常量:本質上是就是“指標是個常量”
int main(void)
{
	int a = 5;
	int b = 6;
	int * const p = &a;  // p的不可以發生改變,但是*p可以改變
	printf("p = %p, *p = %d \r\n", p, *p);
	*p = b;
	printf("p = %p, *p = %d \r\n"
, p, *p); system("pause"); return 1; }

執行結果:
在這裡插入圖片描述

#include <stdio.h>
// 常量指標:本質上是就是指標,指標的指向是個常量
int main(void)
{
	int a = 5;
	int b = 6;
	int const * p = &a;  // *p的不可以發生改變,但是p可以改變
	printf("p = %p, *p = %d \r\n", p, *p);
	p = &b;
	printf("p = %p, *p = %d \r\n",
p, *p); system("pause"); return 1; }

執行結果:
在這裡插入圖片描述

常用場合

  1. 傳指標時,通常作為形參使用,例如,
static void fds_evt_handler(int const * p_evt)

我們將一個指標做實參,在函式體 fds_evt_handler 內,不希望改變過變數的值,就可以在形參中使用常量指標