今天我參加乙個面試,面試中有下面的一道題.
#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,然後...