程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C語言入門 const使用的理解

C語言入門 const使用的理解

編輯:C++入門知識

我們都知道,const的用法是非常靈活的。對於新手來說,還是很棘手的。建議大家看看這兩篇文章,可以結合本篇一起來看,《C++基礎 詳細介紹const的用法》和《C++初學者 const使用詳解》

const對很多人來說既陌生又熟悉.可以說很棘手的問題,有些地方很難理解.我在剛學C的時侯,對它的理解也是很模糊的.好像有點理解,但又說不出個所以然來.在此,就向大家分享,我一直以來對它的理解,如有不當之處請指教.

const可以說一種常量的聲明的關鍵字,如const int a=2;變量a就是一個常變量,a的值不能被改變,這個改變是一定意義上的不能改變.而是說值的改變不能直接通過a這個符號來改變.但事實上,a的值是可能改變的.如下例子:

  1. #include<stdio.h>  
  2. int main()  
  3. {  
  4. const int a=3;  
  5. int *p=(int*)&a;  
  6. *p=100;  
  7. printf("%d",a);  
  8. return 0;  

這樣a的值就被改變了.

const也可以說一種只讀的關鍵字,如

  1. int integerArray[10]={0};  
  2. const int* pointer=integerArray; 

這裡pointer是指向一個常變量的指針變量.pointer指向可能改變,但它所指向的變量的值就不能直接通過pointer來改變.如:

  1. *(p+1)=2; 

這是不可以的.但如果有另外一個數組integerArray1,p=integerArray1是可以有.還有指向的變量不可改變,這種不可改變是一定意義的改變.如下例子:

  1. #include<stdio.h>  
  2. int main()  
  3. {   
  4. int array[10]={0};  
  5. const int *pointer=array;  
  6. int *pointer1=(int*)pointer;  
  7. pointer1[0]=1;  
  8. printf("%d",array[0]);  
  9. return 0;  

以上例子說明了,不能直接通過pointer改變array,但可能間接通過pointer來改變array;

現在說一說有const聲明常指針,它的聲明不像聲明指向常量的指針形式.它的聲明形式為:int* const pointer; .常指針在編程的過程中它的指向不能改變.因此,常指針在聲明的時侯一定要給它賦初值.

否則,就不能直接給它賦值.但是,如果一定要給它賦上一定的值,是可以的.如下例子:

  1. #include<stdio.h>  
  2. int main()  
  3. {  
  4. int a=2;  
  5. int* const p;  
  6. int **p1=(int**)&p;  
  7. *p1=&a;  
  8. printf("%d",*p);  
  9. return 0;  

經過上面的介紹,相信大家對指向常量的常指針的聲明也不難寫出吧.它的聲明形式:cont int* const p;它就不用作過多的介紹了,指向常量的常指針就是指向常量的指針與常指針的復合了.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved