C primer 習題 第二章 21 30

2021-08-11 07:12:22 字數 1769 閱讀 3664

int i = 0;

double dp = &i; //int型別的值不能初始化double*型別的實體。

int ip = i; //int型別的值不能初始化int型別的實體。

int *p = &i; //正確。

if(p) //如果p不為空則為真

if(*p) //如果 *p的值非0則為真

首先要確定指標是否合法,才能判斷它指的物件是不是合法的。

int i = 42;

void *p = &i; //void指標可以指向任何型別的物件。

long lp = &i; //int型別的值不能初始化long*型別的實體。

int * ip, i, &r = i; //ip為int*型別, i為int型, r是i的引用。

int i, *ip = 0; //i為int型, ip為空指標。

int * ip, ip2; //ip為int*型別, ip2為int型。

const int buf; //不合法,buf必須初始化。

int cnt = 0; //合法。

const int sz = cnt; //合法。

++cnt; ++sz; //不合法,const物件不能改變。

int i = -1, &r = 0; //不合法,r必須引用乙個物件。

int *const p2 = &i2; //合法。

const int i = -1, &r = 0; //合法。

const int *const p3 = &i2; //合法。

const int *p1 = &i2; //合法。

const int &const r2; //不合法,r2必須引用乙個物件,引用沒有頂層const。

const int i2 = i, &r = i; //合法。

int i, *const cp; //不合法,const指標需要初始化。

int *p1, *const p2; //不合法,const指標需要初始化。

const int ic, &r = ic; //不合法,ic需要初始化。

const int *const p3; //不合法,const指標需要初始化。

const int *p; //合法。

i = ic; //合法,常量賦值給普通變數。

p1 = p3; //不合法,p3是const指標,不能賦值給普通指標。

p1 = ⁣ //不合法,普通指標不能指向常量。

p3 = ⁣ //合法,p3是常量指標並且指向常量。

p2 = p1; //合法,可以將普通指標賦值給常量指標。

ic = *p3; //合法,p3解引用後是const int型,然後賦值給ic。

const

int v2 = 0;

int v1 = v2;

int *p1 = &v1, &r1 = v1;

const

int *p2 = &v2, *const p3 = &i, &r2 = v2;

v2是頂層const,p2是底層const,p3靠右的是底層const靠左的是頂層const,r2是底層const。

c primer第二章習題

習題2.1 int,long和short型別之間有什麼差別?答 short,int和long型別都表示整型值,儲存空間的大小不同.一般,short型別為半個機器字長,int型別為乙個機器字長,而long型別為乙個或兩個機器字長 在32位機器中int型別和long型別通常字長是相同的 用sizeof可...

C primer 第二章習題

習題 2.1 int long 和 short 型別之間有什麼差別?解答 它們的最小儲存空間不同,分別為 16 位 32 位和 16 位 對於16位機 一般而言,short 類 型為半個機器字 word 長,int 型別為乙個機器字長,而 long 型別為乙個或 兩個機器字長 在 32 位機器中,i...

第二章習題

一 linux對於硬體的要求是什麼?是否一定要有很高的配置才能安裝linux?答 不是一定要有很高的配置才能安裝linux 因為linux系統是非常穩定和高效的,對電腦硬體配置要求很低,這正是linux系統的優勢所在,不同的linux系統版本要求略有不同,但是大體上在同乙個配置等級內,而且當下主流的...