tft每日頭條

 > 職場

 > c語言怎麼編程選擇題

c語言怎麼編程選擇題

職場 更新时间:2025-01-25 13:28:05

畢業即失業,不知道現在還流行這句話不,反正我們當時畢業的時候,流行這句話,也讓人很慌。

言歸正傳,畢業季,為大家分享一些關于C語言的面試題。

c語言怎麼編程選擇題(計算機專業必備)1

1 用變量 a 給出下面的定義

a.一個有10個指針的數組,該指針是指向一個整型數的;

b.一個指向有10個整型數數組的指針;

c.一個指向函數的指針,該函數有一個整型參數并返回一個整型數;

d.一個有10個指針的數組,該指針指向一個函數,該函數有一個整型參數并返回一個整型數;

答案:

int*a[10];

int(*a)[10]

int(*a)(int);

int(*a[10])(int);

2 寫一段代碼計算結構體、聯合、位段、内存大小

答案:

struct A

{

inta;

charb;

floatc;

struct Ad;

doublee;

};

sizeof(A)

3 代碼改錯

下面代碼涉及到動态内存開辟,請改正下面錯誤代碼:

wap( int* p1,int*p2 )

{

int* p;

*p =*p1;

*p1 =*p2;

*p2 = *p;

}

答案:p 為野指針(指向一個已删除的對象或未申請訪問受限内存區域的指針)

void swap(int *pa, int *pb)

{

inttmp;

tmp = *pa;

*pa = *pb;

*pb = tmp;

}

4 數組和鍊表的區别?

數組:數據順序存儲,固定大小;

鍊表:數據可以随機存儲,大小可動态改變;

c語言怎麼編程選擇題(計算機專業必備)2

5 要對絕對地址0x100000賦值

要對絕對地址0x100000賦值,我們可以用:

(unsignedint*)0x100000 =1234;

那麼要是想讓程序跳轉到絕對地址是0x100000去執行,應該怎麼做?

答案:

*((void(*)( ))0x100000)();

(void (*)())0x100000//首先要将0x100000強制轉換成函數指針

*((void (*)())0x100000)(); //然後再調用它:

6 const 有什麼用途?

答案:

1.可以定義 const 常量;

2.const 可以修飾函數的參數、返回值,甚至函數的定義體。被const 修飾的東西都受到強制保護,可以預防意外的變動,能提高程序的健壯性。

7 (void *)ptr 和(*(void**))ptr 的結果是否相同?

其中ptr為同一個指針。

答案:

他們的值相同。

8用#define聲明一個常數,表明1年中有多少秒(忽略閏年問題)?

答案:

#defineSECONDS_PER_YEAR(60*60*24*365)UL

要點:

A.沒有以分号結束;

B.懂得預處理器将為你計算常數表達式的值。即60 * 60 * 24 * 365而不是31536000.

C.考慮到了16位機将會溢出,巧妙運用了UL。

9寫一個“标準”宏MIN,這個宏輸入兩個參數并返回較小的一個?

答案:

#define MIN(A,B) ((A) <= (B) ? (A) : (B))

要點:

A.參數用括号括起來;

B.考察能否合理運用條件運算符;

10Heap與Stack的差别?

答案: Heap是堆,Stack是棧。

Stack的空間由系統自動分配/釋放,Heap上的空間手動分配/釋放。

Stack空間有限,Heap是很大的自由存儲區,malloc函數分配的内存空間即在堆上。

網上經典例子:

inta =0;//全局初始化區

char*p1;//全局未初始化區

voidmain(void)

{

intb;//棧

chars[] ="abc";//棧

char*p2;//棧

char*p3 ="123456";//123456\0在常量區,p3在棧上

staticintc =0;//全局(靜态)初始化區

p1 = (char*)malloc(10);//堆

p2 = (char*)malloc(20);//堆

}

c語言怎麼編程選擇題(計算機專業必備)3

11下面的聲明都是什麼意思?

代碼:

constinta;

intconsta;

constint*a;

int*consta;

intconst* aconst;

答案:

A.前兩個的作用是一樣,a是一個常整型數;

B.第三個意味着a是一個指向常整型數的指針(也就是,整型數是不可修改的,但指針可以);

C.第四個意思a是一個指向整型 數的常指針(也就是說,指針指向的整型數是可以修改的,但指針是不可修改的);

D.最後一個意味着a是一個指向常整型數的常指針(也就是說,指針指向的整型數 是不可修改的,同時指針也是不可修改的)。

12sizeof和strlen的區别?

答案: sizeof是運算符,在編譯時即計算好了;而strlen是函數,要在運行時才能計算。

------------ END ------------

另外,對現在我們的大多數朋友來說還是學編程技術最重要!栽一棵樹最好的時間是十年前,其次是現在。對于準備學習編程的小夥伴,如果你想更好地提升你的編程核心能力(内功)不妨從現在開始!

編程學習書籍分享:

c語言怎麼編程選擇題(計算機專業必備)4

編程學習視頻分享:

c語言怎麼編程選擇題(計算機專業必備)5

整理分享(多年學習的源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比自己琢磨更快哦!

點擊下方【了解更多】獲取更多學習資料幫助你學習成長哦~

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关職場资讯推荐

热门職場资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved