我做錯的面試筆試題 c c 版

2021-08-31 19:56:29 字數 2090 閱讀 2628

今天我參加乙個面試,面試中有下面的一道題.

#include

#include

#include

void get_memory(char *p)

int main(void)

面試時,面試官讓我做3道題其中這一題我做錯了.

我答了輸出"hello,world"了.

當時我沒有想通.現在我回到實驗室,自己除錯了一下.

除錯過程如下:

在get_memory(str);中.str傳遞的是0x00過去.

.然後.p的值也是0x00.

這個肯定不成功,我以為是因為str初始化為null才這樣的.

但是.當我給str初始化有東西時.如下:

int get_memory(char *p)

int main(void)

/*** 在eclipse中除錯時一些變數 的值:

語句:char *str = "a";

執行前:

name : str

details:0x28bff4 "|\\315\\025"

default:0x28bff4 "|\315\025"

decimal:2670580

hex:0x28bff4

binary:1010001011111111110100

octal:012137764

執行後:

name : str

details:0x8048c0f "a"

default:0x8048c0f "a"

decimal:134515727

hex:0x8048c0f

binary:1000000001001000110000001111

octal:01001106017

語句 :p = (char *)malloc(100);

執行前:

name : p

details:0x8048c0f "a"

default:0x8048c0f "a"

decimal:134515727

hex:0x8048c0f

binary:1000000001001000110000001111

octal:01001106017

執行後:

name : p

details:0x8048c0f "a"

default:0x8048c0f "a"

decimal:134515727

hex:0x8048c0f

binary:1000000001001000110000001111

octal:01001106017

分析 char *p = (char *)malloc(100);語句時發現,malloc的呼叫對於p好像沒有什麼直接的影響.

我們換成在main函式中對str直接呼叫malloc試下,如下:

/**str = (char *)malloc(100);

呼叫前:

name : str

details:0x8048c0f "a"

default:0x8048c0f "a"

decimal:134515727

hex:0x8048c0f

binary:1000000001001000110000001111

octal:01001106017

呼叫之後:

name : str

details:0x804b008 ""

default:0x804b008 ""

decimal:134524936

hex:0x804b008

binary:1000000001001011000000001000

octal:01001130010

**/

這是乙個問題.為什麼在引數中宣告的char *p.在呼叫了malloc函式之後卻沒有反應呢?

面試的過程中,我還被問到乙個問題,就是堆和棧的區別.

C C 常見的面試筆試題

1 程序的記憶體空間的劃分為那些段,各儲存什麼資料?劃分的段 儲存的資料 test 段 儲存二進位制指令 常量 data資料段 儲存初始化的全域性變數和被static修飾的區域性變數 bss 靜態資料段 儲存未初始化的全域性變數和被static修飾的區域性變數 stack 棧 儲存區域性變數 塊變數...

面試筆試題

1 昨天參加一公司筆試,給幾道演算法題整懵了,其實也不難,但好久沒有碰演算法,只是有思路,要讓我在這麼短的時間內寫出程式來還是不行。2 這裡將其中一道稍微複雜一點的演算法題寫下來,以此小結。3 4 題目描述 5 將n個雞蛋放入到m個籃子中去 n m 保證每個籃子中至少乙個雞蛋,然後指定乙個數x,要求...

面試筆試題

1.文字檔案裡面有很多單詞 單詞與單詞之間以空格 換行符隔開,且不管單個單詞的正確性 統計各單詞出現的次數,刪掉出現次數最少的那些 實現 fstream讀入事先準備好的檔案test.txt,存到c 的關聯容器map,用單詞string做key,出現的次數int做value,找到最小的value,然後...