C/C++基础面试-Const的全面理解(C部分)
Const的全面理解(C部分)
?
下面我們來(lái)看一些簡(jiǎn)單的代碼:
const int a1=1; int const a2=1;int *p=0x1; const int* a1; int* const a2; int const* const a3;Const?是C中類似的修飾符。常見(jiàn)的數(shù)據(jù)類型修飾符有
Short?long?unsigned?static?auto?extern?register.
?
?
定義一個(gè)變量
類型描述符?變量名;
類型描述符=類型的修飾符+數(shù)據(jù)類型(int,char,float)
const int a1=1; int const a2=1;表示的就是一個(gè)意思(指const?int和int?const是一個(gè)意思)
另外:
Static int short i; Int static short i;也都是表示一個(gè)意思(指static、int、short)
?
對(duì)指針變量類型的理解
[],(),*有優(yōu)先級(jí),有以下理解
int?*a1[10]; //[]高于*,所以是一個(gè)數(shù)組,每一個(gè)成員都是指針
int?(*a2)[10]; //()高于[],是一個(gè)指針,指向的類型為一個(gè)數(shù)組
此處可見(jiàn)!
?
對(duì)指針變量的類型理解(建議從左向右)
int p = 0x1; const int* a1=&p; //變量a1,int*,const,表名指向的數(shù)據(jù)不可改 int const *a2 = &p; //同a1 int* const a3=&p; //a3指向的地址不能修改 int const* const a4=&p; //什么都不能修改最后!
typedef?void*?VP;
1.const?void*?ptr1?
2.const?VP?ptr2
我們用如下代碼來(lái)測(cè)試
#include <stdio.h> void main() {typedef void* VP;const void* ptr1=NULL;const VP ptr2=(VP)ptr1;VP const ptr3=(VP)ptr1;getchar(); }可見(jiàn)當(dāng)用typedef定義時(shí)都為常指針
?
Const的作用
1.向其他程序員傳遞這個(gè)是不能修改的。
2.有可能讓編譯器產(chǎn)生更加緊湊的代碼,避免不必要的錯(cuò)誤。
3.合理包含我們只讀的數(shù)據(jù),避免不必要的錯(cuò)誤
使用的位置
1.定義常量。防止被修改
2.函數(shù)參數(shù)中,加以限制
如strcpy和strncpy等等等
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!
總結(jié)
以上是生活随笔為你收集整理的C/C++基础面试-Const的全面理解(C部分)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2-3-4树和B树
- 下一篇: mysql 同一字段分别统计,mysql