程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> [原創]c語言中const與指針的用法,原創const

[原創]c語言中const與指針的用法,原創const

編輯:關於C語言

[原創]c語言中const與指針的用法,原創const


最近一直在准備筆試,補補大一大二欠下的課。復習c語言時碰見這麼個題:

  1 2 3 4 5 int a=248, b=4; int const c=21; const int *d=&a;  int *const e=&b; int const const f =&a; 

 

請問下列表達式哪些會被編譯器禁止?
A:*c=32

B:*d=43
C:e=&a

D:f=0x321f

E:d=&b

F:*e=34


下面逐條分析
第一行代碼不提, 第二行,int const c=21;和const int c=21;是一個意思,都是修飾c為const,即c的值不能變化。所以A,肯定錯,c就不是一個指針;
第三行:const int *d=&a;表示d指向的值是不可通過指針改變的,所以B:*d=43錯誤。而d的指向是可變的,這裡d=&a,E:d=&b也是正確的;
第四行:int *const e=&b;表示指針e的指向是不能改變的,所以C錯;但可以改變指向的值,*e=34是正確的,F正確;
第五行:int const const f =&a;表示指針f的指向和指向的內容都不能改變,D錯誤
題目問哪些會被禁止,所以答案是ABCD。

這裡百度百科裡介紹了一個方法:
const在*的左邊,則指針指向的變量的值不可直接通過指針改變(可以通過其他途徑改變);在*的右邊,則指針的指向不可變。簡記為“左定值,右定向”

但是一定要注意,int * const p; int const * const p; 或者 const int * const p;這三種表示都是指針指向不能改變的,定義時要初始化一個地址。

基本上const就沒問題了~

  


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