關於C/C++的一些知識點整理 (4)

1.

    答案: 10 ,10。

    解析:構造了一個對象數組,所以要調用十次構造函數,同時也要析構十次。

2.有以下程序,問輸出結果爲?

main()
{
int a=3,b=4,c=5,d=2;
  
if(a>b)
   
if(b>c)
    
printf("%d",d++ +1);
  
else
    
printf("%d",++d +1);
  
printf("%d\n",d);
}

  答案:2。

  解析:根據就近原則,此代碼段等價於:

if(a>b)
{
if(b>c) printf("%d",d++ +1);
else  printf("%d",++d +1);
}
printf("%d\n",d);

3.下列代碼的執行結果?

int main(void)
{
    char *p[]={“TENCENT”,”CAMPUS”,”RECRUITING”};
    char **pp[]={p+2,p+1,p};
    char ***ppp=pp;
    printf(“%s”,**++ppp);
    printf(“%s”,*++*++ppp);
    return 0;
}

    答案:CAMPUS   CAMPUS。

   錯寫爲:CAMPUS   RECRUITING。

(1)printf(“%s”,**++ppp);即,ppp當前所指向的位置,再往下移一個位置,即pp的位置2,而pp的位置2指向的是p的位置2,p的位置2指向的是CAMPUS,所以先輸出CAMPUS

(2)printf(“%s”,*++*++ppp);這個語句等價於 printf(“%s”,*++(*++ppp));所以我們首先看,++ppp,第一個printf語句中ppp已經指向了pp的位置2,所以再往下移一個,指向了pp的位置3,而(*++ppp)則代表pp位置3所指向的內容,即p的位置1(pp的位置3指向的是p的位置1),在此基礎上前面再加上一個++,則代表指針p在位置1的基礎上再往下移動,即指針p的位置2,而p的位置2所指向的內容是CAMPUS,所以第二行輸出的也是CAMPUS。

4.通用多態是指包含多態和參數多態。

5.

.

%d整型輸出,%ld長整型輸出,

%o以八進制數形式輸出整數,

%x以十六進制數形式輸出整數,

%u以十進制數輸出unsigned型數據(無符號數)。

%c用來輸出一個字符,

%s用來輸出一個字符串,

%f用來輸出實數,以小數形式輸出,

%e以指數形式輸出實數,

%g根據大小自動選f格式或e格式,且不輸出無意義的零。

其中%o和%x都是二進制的延伸,即八進制和十六進制,可以適用於unsigned變量輸出

6.

裝載速度快是靜態鏈接庫的優點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章