精選C++面試題及答案

  1、局部變量能否和全局變量重名?

精選C++面試題及答案

能,局部會屏蔽全局。要用全局變量,需要使用"::"

局部變量可以與全局變量同名,在函數內引用這個變量時,會用到同名的局部變量,而不會用到全局變量。對於有些編譯器而言,在同一個函數內可以定義多個同名的局部變量,比如在兩個循環體內都定義一個同名的局部變量,而那個局部變量的作用域就在那個循環體內。

  2、如何引用一個已經定義過的全局變量?

extern

可以用引用頭文件的方式,也可以用extern關鍵字,如果用引用頭文件方式來引用某個在頭文件中聲明的全局變理,假定你將那個變寫錯了,那麼在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那麼在編譯期間不會報錯,而在連接期間報錯。

  3、全局變量可不可以定義在可被多個.C文件包含的頭文件中?為什麼?

可以,在不同的C文件中以static形式來聲明同名全局變量。

可以在不同的C文件中聲明同名的全局變量,前提是其中只能有一個C文件中對此變量賦初值,此時連接不會出錯。

  4、語句for( ;1 ;)有什麼問題?它是什麼意思?

無限循環,和while(1)相同。

  5、do……while和while……do有什麼區別?

前一個循環一遍再判斷,後一個判斷以後再循環。

  6、請寫出下列代碼的輸出內容

#include

main()

{

int a,b,c,d;

a=10;

b=a++;

c=++a;

d=10*a++;

printf(“b,c,d:%d,%d,%d”,b,c,d);

return 0;

}

答:10,12,120

  7、請找出下面代碼中的所以錯誤

説明:以下代碼是把一個字符串倒序,如“abcd”倒序後變為“dcba”

#include “string.h”

main()

{

char*src=”hello,world”;

char* dest=NULL;

int len=strlen(src);

dest=(char*)malloc(len);

char* d=dest;

char* s=src[len];

while(len–!=0)

d++=s–;

printf(“%s”,dest);

return 0;

}

答:

方法1:

int main()

{

char* src = “hello,world”;

int len = strlen(src);

char* dest = (char*)malloc(len+1);//要為