1. 程式人生 > >C語言筆記16--關鍵詞const

C語言筆記16--關鍵詞const

關鍵詞const限定一個變數不允許被改變,也就是改變使用者對變數的許可權。const修飾時,代表這個變數是一個常量,變數被修飾後,不能再進行自增、自減等。 1.用const定義一個常量

#include<stdio.h>
#include<stdlib.h>
void main()
{
	const int a=10;//只能在定義時賦值
	//a++;不能自增
	//a=20;不能再賦值
	printf("%d\n",a);
	system("pause");
}

上面的程式碼簡單地介紹const定義一個常量,值得注意的是const int 等價於int const。 2.const與指標 const與指標混合使用時非常容易出錯,要區分是一個指標指向一個常量還是指標是常量。

#include<stdio.h>
#include<stdlib.h>
void main()
{
	const int a=10;
	const int b=20;
	const int *p=&a;//定義一個指標指向一個常量
	printf("%d\n",*p);
	//*p=30;不能修改
	p=&b;
	printf("%d\n",*p);
	system("pause");
}

列印結果為: 在這裡插入圖片描述 上面const int *p,定義了一個指標,指向常量,但指標本身是一個變數,可以指向不同的地址,並且指標不能修改指向的內容。 把上面的程式碼做出修改:

#include<stdio.h>
#include<stdlib.h>
void main()
{
	const int a=10;
	const int b=20;
	int * const p=&a;//這是指標是一個常量
	printf("%d\n",*p);
	//p=&b;不能修改指向的地址
	*p=30;
	printf("%d\n",*p);
	system("pause");
}

列印結果為: 在這裡插入圖片描述 上面的int * const p;是定義了一個常量指標,指標是一個常量,所以不能再重新指向地址,但可以修改指向的內容。 再對程式碼做出修改:

#include<stdio.h>
#include<stdlib.h>
void main()
{
	const int a=10;
	const int b=20;
	const int * const p=&a;//這是指標是一個常量,指向的也是一個常量
	printf("%d\n",*p);
	//p=&b;不能修改指向的地址
	//*p=30;不能修改指向的內容
	system("pause");
}

列印結果: 在這裡插入圖片描述

const int * const p;定義的是一個常量指標指向一個常量,他不能指向新的地址,也不能修改指向的內容。 3.總結 區分const int *,int *const,const int *const,最主要的一點是const和*的位置,當*在const的右邊時,那麼這個指標是一個變數,指向的是一個常量,常量不能修改,自然就不能修改內容;當*在const的左邊時,那麼指標是一個常量指標,不能再指向新的地址,指向的是一個變數,可以對內容作出修改。