c的基礎問題

2021-07-27 16:51:11 字數 918 閱讀 4289

1.首先就是sizeof和strlen的問題:

sizeof的資料型別是:size_t 返回資料的格式是:%lu

strlen的資料型別是:int 返回資料型別格式是:%d

strlen是個函式

sizeof 可以用型別做引數,strlen 只能用 char* 做引數,且必須是以 '\0' 結尾的。此外,sizeof 還可以用函式做引數

**如下:

#include #include int main()

輸出:size:12

strlen:11

所以sizeof計算的結果包括'\0', 而strlen是不包括的。

2.現在就得講講型別所定義的大小是問題了:

struct a;

sizeof(a)等於多少?

int佔4位元組

short 佔2位元組

double佔8位元組

所以總共是14位元組,但儲存的時候會採取位元組對齊的方式,所以sizeof(a)=16;

struct b;
在linux系統中 指標變數是佔8個位元組(這個跟作業系統是有關係的,在32位作業系統內是4個位元組)

變數b.a佔 4*3=12個位元組

b.b佔4個位元組

所以總共是24個位元組 採用位元組對齊方式, sizeof(b)=32;

char var[10];

int func(char var)

結果為:4 var 等價於 *var ,當陣列名以形參傳遞給函式時,已經退化為乙個指標。

void *func(void)
sizeof(func)=8(這個跟作業系統是有關係的,在32位作業系統內是4個位元組)。

C 基礎問題

1.傳指標時,我們可以通過指標來修改它在外部所指向的內容。但如果要修改外部指標所指向的物件是不可能的。例如傳遞外部指標到函式內來分配空間,必須傳遞指標的指標或指標的引用。2.char carry 10 編譯器會將其後所有的東西都置0 3.函式返回值為const時,返回的東西付給乙個型別相同的標示後其...

C 面試基礎問題

傳入某個屬性的set方法的隱含引數的名稱是什麼?value,它的型別和屬性所聲名的型別相同。如何在c 中實現繼承?在類名後加上乙個冒號,再加上基類的名稱。c 支援多重繼承麼?不支援。可以用介面來實現。被protected修飾的屬性 方法在何處可以訪問?在繼承或間接繼承與這個類的子類中可以訪問。私有成...

C 面試基礎問題

c 面試基礎問題 如果你的簡歷上面寫 熟悉 了解c 那麼你就應該能夠回答下面的這些基礎問題。下面給出的是簡要答案以供參考。如果是 精通 那麼請參考 http www.cnblogs.com dflying archive 2006 04 01 364458.html 傳入某個屬性的set方法的隱含引...