青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

風(fēng)雨兼程

ring my bells
posts - 49, comments - 14, trackbacks - 0, articles - 0

C/C++面試題2

Posted on 2008-05-22 21:55 silentneil 閱讀(478) 評論(0)  編輯 收藏 引用

1.
 關(guān)鍵字static的作用是什么?
在C語言中,關(guān)鍵字static有三個明顯的作用:
1)在函數(shù)體,一個被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中維持其值不變。
2) 在模塊內(nèi)(但在函數(shù)體外),一個被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問。它是一個本地的全局變量。
3) 在模塊內(nèi),一個被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。
 
2.
const最經(jīng)常的用法
 1.為了防止傳遞的函數(shù)參數(shù)不被修改,在調(diào)用函數(shù)的形參中用const關(guān)鍵字.
2.const可以用來創(chuàng)建數(shù)組常量、指針常量、指向常量的指針等
const int a;     //前兩個的作用是一樣,a是一個常整型數(shù)。
int const a;
const int *a;    //第三個意味著a是一個指向常整型數(shù)的指針(也就是,整型數(shù)是不可修改的,但指針可以)。
int * const a;
int const * a const; //第四個意思a是一個指向整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是可以修改的,但指針是不可修改的)。最后一個意味著a是一個指向常整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是不可修改的,同時指針也是不可修改的)。
//注:const并不會阻止參數(shù)的修改

3.
下面的代碼輸出是什么,為什么?
void foo(void)
{
    unsigned int a = 6;
    int b = -20;
    (a+b > 6) ? puts("> 6") : puts("<= 6");
}
//當表達式中存在有符號類型和無符號類型時所有的操作數(shù)都自動轉(zhuǎn)換為無符號類型。
因此-20變成了一個非常大的正整數(shù),所以該表達式計算出的結(jié)果大于6。
 
4.
#define dPS struct s *
typedef struct s * tPS;
以上兩種情況的意圖都是要定義dPS 和 tPS 作為一個指向結(jié)構(gòu)s指針。哪種方法更好呢?(如果有的話)為什么?
這是一個非常微妙的問題,任何人答對這個問題(正當?shù)脑颍┦菓?yīng)當被恭喜的。答案是:typedef更好。思考下面的例子:
dPS p1,p2;
tPS p3,p4;
第一個擴展為
struct s * p1, p2;
.上面的代碼定義p1為一個指向結(jié)構(gòu)的指,p2為一個實際的結(jié)構(gòu),這也許不是你想要的。第二個例子正確地定義了p3 和p4 兩個指針。晦澀的語法
 
5.int a = 5, b = 7, c;
c = a+++b;//<==>c = a++ + b;
這段代碼持行后a = 6, b = 7, c = 12。
 

6.
寫出判斷ABCD四個表達式的是否正確, 若正確, 寫出經(jīng)過表達式中 a的值(3分)
int a = 4;
(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);
a = ?
答:C錯誤,左側(cè)不是一個有效變量,不能賦值,可改為(++a) += a;
改后答案依次為9,10,10,11

7.頭文件中的 ifndef/define/endif 干什么用?預(yù)處理
答:防止頭文件被重復(fù)引用

8. switch()中不允許的數(shù)據(jù)類型是?
答:實型

9.
編寫strcat函數(shù)(6分)
已知strcat函數(shù)的原型是char *strcat (char *strDest, const char *strSrc);
其中strDest 是目的字符串,strSrc 是源字符串。
(1)不調(diào)用C++/C 的字符串庫函數(shù),請編寫函數(shù) strcat
答:
VC源碼:
char * __cdecl strcat (char * dst, const char * src)
{
char * cp = dst;
while( *cp )
cp++; /* find end of dst */
while( *cp++ = *src++ ) ; /* Copy src to end of dst */
return( dst ); /* return dst */
}
(2)strcat能把strSrc 的內(nèi)容連接到strDest,為什么還要char * 類型的返回值?
答:方便賦值給其他變量

10.

回答下面的問題(6分)
(1).Void GetMemory(char **p, int num){
*p = (char *)malloc(num);
}
void Test(void){
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
請問運行Test 函數(shù)會有什么樣的結(jié)果?
答:輸出“hello”
(2). void Test(void){
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL){
strcpy(str, “world”);
printf(str);
}
}
請問運行Test 函數(shù)會有什么樣的結(jié)果?
答:輸出“world”
(3). char *GetMemory(void){
char p[] = "hello world";
return p;
}
void Test(void){
char *str = NULL;
str = GetMemory();
printf(str);
}
請問運行Test 函數(shù)會有什么樣的結(jié)果?
答:無效的指針,輸出不確定
 
11.
程序什么時候應(yīng)該使用線程,什么時候單線程效率高。
答:1.耗時的操作使用線程,提高應(yīng)用程序響應(yīng)
2.并行操作時使用線程,如C/S架構(gòu)的服務(wù)器端并發(fā)線程響應(yīng)用戶的請求。
3.多CPU系統(tǒng)中,使用線程提高CPU利用率
4.改善程序結(jié)構(gòu)。一個既長又復(fù)雜的進程可以考慮分為多個線程,成為幾個獨立或半獨
立的運行部分,這樣的程序會利于理解和修改。
其他情況都使用單線程。

12
.C++中什么數(shù)據(jù)分配在棧或堆中,New分配數(shù)據(jù)是在近堆還是遠堆中?
答:棧: 存放局部變量,函數(shù)調(diào)用參數(shù),函數(shù)返回值,函數(shù)返回地址。由系統(tǒng)管理
堆: 程序運行時動態(tài)申請,new 和 malloc申請的內(nèi)存就在堆上
13.
int i=10, j=10, k=3;
k*=i+j; k最后的值是?
答:60,此題考察優(yōu)先級,實際寫成: k*=(i+j);,賦值運算符優(yōu)先級最低

14.
ICMP是什么協(xié)議,處于哪一層?
答:Internet控制報文協(xié)議,處于網(wǎng)絡(luò)層(IP層)
15.
全局變量和局部變量在內(nèi)存中是否有區(qū)別?如果有,是什么區(qū)別?
      全局變量儲存在靜態(tài)數(shù)據(jù)庫,局部變量在堆棧。
17.
-1,2,7,28,,126請問28和126中間那個數(shù)是什么?為什么?
第一題的答案應(yīng)該是4^3-1=63
規(guī)律是n^3-1(當n為偶數(shù)0,2,4)
      n^3+1(當n為奇數(shù)1,3,5)
 
18.
Heap與stack的差別。
Heap是堆,stack是棧。
Stack的空間由操作系統(tǒng)自動分配/釋放,Heap上的空間手動分配/釋放。
Stack空間有限,Heap是很大的自由存儲區(qū)
C中的malloc函數(shù)分配的內(nèi)存空間即在堆上,C++中對應(yīng)的是new操作符。
程序在編譯期對變量和函數(shù)分配內(nèi)存都在棧上進行,且程序運行過程中函數(shù)調(diào)用時參數(shù)的傳遞也在棧上進行

19.
用宏定義寫出swap(x,y)     //如果把較長的宏定義分成干行,須在待續(xù)的行末尾加上\
#define swap(x,y) \
x=x+y;\
y=x-y;\
x=x-y
注意:結(jié)尾沒有;
20
一個指針為4個字節(jié)
 int *p;
 printf("%d",sizeof(p));//輸出: 4

void Func(char str[100])
{
printf("%d\n", sizeof(str));
}
答:
4
分析:
指針長度
一個32位的機器,該機器的指針是多少位
指針是多少位只要看地址總線的位數(shù)就行了。80386以后的機子都是32的數(shù)據(jù)總線。所以指針的位數(shù)就是4個字節(jié)了。
21.
main()
{
  int a[5]={1,2,3,4,5};
   int *ptr=(int *)(&a+1);    //ptr實際是&(a[5]),也就是a+5
   printf("%d,%d",*(a+1),*(ptr-1));
}
輸出:2,5
*(a+1)就是a[1],*(ptr-1)就是a[4],執(zhí)行結(jié)果是2,5
&a+1不是首地址+1,系統(tǒng)會認為加一個a數(shù)組的偏移,是偏移了一個數(shù)組的大小(本例是5個int)
int *ptr=(int *)(&a+1);  則ptr實際是&(a[5]),也就是a+5
原因如下:
&a是數(shù)組指針,其類型為 int (*)[5];
而指針加1要根據(jù)指針類型加上一定的值,不同類型的指針+1之后增加的大小不同 .a是長度為5的int數(shù)組指針,所以要加 5*sizeof(int)
所以ptr實際是a[5]  .但是ptr與(&a+1)類型是不一樣的(這點很重要)
所以prt-1只會減去sizeof(int*)
a,&a的地址是一樣的,但意思不一樣,a是數(shù)組首地址,也就是a[0]的地址,&a是對象(數(shù)組)首地址,a+1是數(shù)組下一元素的地址,即a[1],&a+1是下一個對象的地址,即a[5].

22.
1)給定結(jié)構(gòu)struct A
{
       char t:4;
       char k:4;
       unsigned short i:8;
       unsigned long m;
};問sizeof(A) = ?
給定結(jié)構(gòu)struct A
{
       char t:4; 4位
       char k:4; 4位
       unsigned short i:8; 8位     
       unsigned long m; // 偏移2字節(jié)保證4字節(jié)對齊
}; // 共8字節(jié)

23.
//輸出結(jié)果: 15
#include<stdio.h>
int main(void)
{
 char aa[10];
    printf("%d",strlen(aa));
 return 0;
}
 
24.
C和C++有什么不同?
從機制上:c是面向過程的(但c也可以編寫面向?qū)ο蟮某绦颍籧++是面向?qū)ο蟮模峁┝祟悺5牵?br>c++編寫面向?qū)ο蟮某绦虮萩容易
從適用的方向:c適合要求代碼體積小的,效率高的場合,如嵌入式;c++適合更上層的,復(fù)雜的; llinux核心大部分是c寫的,因為它是系統(tǒng)軟件,效率要求極高。
從名稱上也可以看出,c++比c多了+,說明c++是c的超集;那為什么不叫c+而叫c++呢,是因為c++比
c來說擴充的東西太多了,所以就在c后面放上兩個+;于是就成了c++
C語言是結(jié)構(gòu)化編程語言,C++是面向?qū)ο缶幊陶Z言。
C++側(cè)重于對象而不是過程,側(cè)重于類的設(shè)計而不是邏輯的設(shè)計。

25 &和&&的區(qū)別。
&是位運算符。&&是布爾邏輯運算符。
26,short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?
short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,不能顯式轉(zhuǎn)化為short型。可修改為s1 =(short)(s1 + 1) .short s1 = 1; s1 += 1正確。

27.
17.在不用第三方參數(shù)的情況下,交換兩個參數(shù)的值
#include <stdio.h>
void main()
{
    int i=60;
    int j=50;
    i=i+j;
    j=i-j;
    i=i-j;
    printf("i=%d\n",i);
    printf("j=%d\n",j);
}
方法二:
i^=j;
j^=i;
i^=j;
方法三:
// 用加減實現(xiàn),而且不會溢出
a = a+b-(b=a)
28.
假設(shè)你有8個球,其中一個略微重一些,但是找出這個球的惟一方法是將兩個球放在天平上對比。最少要稱多少次才能找出這個較重的球?

答:
2次就可以了,方法:將其分成3堆,分別是3個、3個、2個。
第一次天平兩邊各放3個,會有兩種情況,一、兩邊持平一樣重,那較重的球則不在里面,那就把剩下的兩個稱一下就能找到較重那個了。第二種情況是有一邊較重,那較重的球就在較重那邊的3個之中,第二次稱就是就在這3個之中拿出兩個來比較,也有兩種情況,持平則較重的是沒放進去稱的那個,有一邊較重則那個就是較重的。


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            可以看av的网站久久看| 亚洲国产精品一区制服丝袜| 欧美激情中文不卡| 欧美 日韩 国产精品免费观看| 欧美承认网站| 久久久精品性| 久久er精品视频| 久久成人精品电影| 免费在线看成人av| 亚洲精品1234| 日韩午夜电影在线观看| 亚洲特色特黄| 久久蜜臀精品av| 欧美日韩成人一区二区| 国产日韩视频| 亚洲人成人77777线观看| 中文国产一区| 久久亚洲欧洲| 99www免费人成精品| 欧美在线观看你懂的| 欧美国产日产韩国视频| 国产日韩欧美在线一区| 一本大道久久精品懂色aⅴ| 午夜精品久久| 欧美国产日韩一二三区| 午夜亚洲精品| 欧美三级在线视频| 亚洲欧洲一区二区三区在线观看| 亚洲香蕉伊综合在人在线视看| 老色鬼精品视频在线观看播放| 一本大道久久精品懂色aⅴ| 久久久噜噜噜久噜久久 | 在线看国产一区| 亚洲午夜日本在线观看| 久久综合五月| 亚洲综合大片69999| 欧美黄色aaaa| 在线观看91精品国产入口| 一本色道久久综合亚洲精品婷婷| 久久国产视频网| av不卡在线观看| 农村妇女精品| 一区二区在线观看视频| 午夜电影亚洲| 99xxxx成人网| 欧美日韩国产页| 亚洲精品女人| 欧美成人久久| 久久久久五月天| 国产午夜精品美女视频明星a级 | 亚洲欧美美女| 欧美体内she精视频在线观看| 亚洲第一精品福利| 久久久久久久久伊人| 亚洲已满18点击进入久久| 欧美日韩美女在线观看| 日韩视频中文| 亚洲影视九九影院在线观看| 日韩午夜三级在线| 欧美日韩国产成人在线免费 | 亚洲午夜在线观看| 亚洲免费观看在线观看| 欧美视频不卡| 亚洲免费一级电影| 亚洲网站啪啪| 国产精品视频一| 欧美一区国产在线| 先锋影院在线亚洲| 国产一区二区久久精品| 鲁大师成人一区二区三区| 久久精品国产亚洲aⅴ| 极品尤物一区二区三区| 欧美激情片在线观看| 欧美极品aⅴ影院| 亚洲性夜色噜噜噜7777| 亚洲欧美成人网| 国内精品**久久毛片app| 免费观看欧美在线视频的网站| 免费成人黄色片| 亚洲社区在线观看| 午夜精品影院| 91久久精品网| 亚洲视频中文| 精品成人一区二区| 亚洲国产日韩欧美在线图片| 欧美理论视频| 久久久精品久久久久| 你懂的一区二区| 香蕉久久夜色精品国产使用方法| 午夜国产欧美理论在线播放 | 国产日韩在线看片| 欧美激情视频一区二区三区免费 | 欧美大片网址| 亚洲欧美不卡| 久久综合九色综合网站| 99视频热这里只有精品免费| 亚洲一级黄色| 亚洲国产一区视频| 亚洲一区二区三区四区五区黄 | 欧美日韩在线精品| 久久深夜福利免费观看| 欧美日韩免费一区| 久久人人爽国产| 国产精品成人免费精品自在线观看| 久久久久国产精品一区| 欧美精品性视频| 欧美aa国产视频| 国产女优一区| aa成人免费视频| 亚洲国产欧美一区二区三区久久 | 亚洲国产精品999| 中文国产成人精品久久一| 在线播放视频一区| 亚洲欧美日韩天堂| 亚洲五月婷婷| 欧美高清在线视频| 久久夜色精品| 国产精品亚洲а∨天堂免在线| 亚洲成人资源网| 国产一区二区欧美| 亚洲四色影视在线观看| 一区二区三区欧美在线| 美女尤物久久精品| 老巨人导航500精品| 国产日韩在线视频| 亚洲欧美在线磁力| 亚洲一区二区在线观看视频| 欧美国产免费| 亚洲福利免费| 在线国产日韩| 久久久久久网站| 久久一区二区精品| 国外成人在线| 久久精品五月婷婷| 六月婷婷一区| 亚洲国产精品一区二区www| 久久综合伊人77777尤物| 久久综合九色综合久99| 激情久久久久| 久久综合给合久久狠狠狠97色69| 久久综合色一综合色88| 黄页网站一区| 久久综合网络一区二区| 欧美高清视频一二三区| 91久久精品日日躁夜夜躁欧美 | 99精品国产热久久91蜜凸| 日韩亚洲欧美成人| 欧美日本高清视频| 在线视频中文亚洲| 久久精品视频99| 在线不卡视频| 欧美成人一区二区三区片免费| 亚洲韩国日本中文字幕| 夜夜爽www精品| 国产精品第一页第二页第三页| 亚洲一区三区视频在线观看 | 在线一区二区日韩| 国产精品欧美在线| 久久久美女艺术照精彩视频福利播放| 久久综合999| 99精品欧美一区| 国产精品久久久久久影视 | 国产欧美精品xxxx另类| 亚洲欧美日本伦理| 欧美r片在线| 欧美www视频| 亚洲毛片一区| 欧美电影免费| 亚洲视频图片小说| 久久视频在线看| 一本色道久久综合亚洲91| 国产精品久久久久久超碰 | 免费国产自线拍一欧美视频| 亚洲国产日韩欧美在线99| 亚洲直播在线一区| 136国产福利精品导航网址| 欧美日韩国产精品一区二区亚洲| 亚洲欧美福利一区二区| 欧美激情久久久久| 久久精品国产欧美激情| 亚洲美女诱惑| 狠狠网亚洲精品| 欧美无乱码久久久免费午夜一区| 欧美在线网站| 亚洲一区亚洲| 亚洲精品四区| 欧美成人高清| 久久久久中文| 亚洲欧美综合网| 99在线精品观看| 国产亚洲激情视频在线| 欧美日韩伦理在线免费| 久久先锋影音| 欧美一区国产二区| 亚洲一区精品在线| 99伊人成综合| 日韩视频亚洲视频| 亚洲国产裸拍裸体视频在线观看乱了中文 | 99成人在线| 亚洲激情av|