一道看似考察strcpy,實則考察記憶體中變數的題目

2021-08-30 20:49:15 字數 508 閱讀 8758

int main()

程式執行的結果是什麼?

解析:這道題看上去很簡單,實際上不簡單。

第一想到的就是strcpy的位址越界問題,所以認為結果可能是:

world

world

或者是執行錯誤,因為出現了位址越界,對於越界後的位址我們並不知道存的是什麼,有可能是很重要的內容。

第二想到的是\n在結果中怎麼輸出呢,這個問題考慮的多餘,\\n才是輸出\n,而\n直接以回車形式輸出。

第三真正上機執行會發現,即使位址不發生越界,執行也會錯誤,仔細分析原因,得出如下結論

char *a="hello"; 其中的"hello"是字串常量,存放在常量儲存區(具體存放在記憶體什麼位置,還有待於驗證),但有一點是肯定的,常量是不允許修改的。

改正:char a[6]="hello";

或者是 char *a=(char *)malloc(sizeof(char)*6); strcpy(a,"hello");

一道看似簡單的面試題

使用php,給定乙個數,判斷這個數是否是二的n次方這樣看似簡單的乙個面試題,實際牽出了很多基礎知識,本章在為大家補習基礎知識的情況下來解答這道題。先亮出答案 function exponentiation number if number number 1 0 else exponentiation...

一道看似簡單的面試題

使用php,給定乙個數,判斷這個數是否是二的n次方 這樣看似簡單的乙個面試題,實際牽出了很多基礎知識,本章在為大家補習基礎知識的情況下來解答這道題。先亮出答案 function exponentiation number if number number 1 0 else exponentiatio...

一道verilog筆試題考察的generate特性

可以動態的生成verilog 當對向量中的多個位進行重複操作時,或者當進行多個模組的例項引用的重複操作時,或者根據引數的定義來確定程式中是否應該包含某段verilog 的時候,使用生成語句能大大簡化程式的編寫過程。生成語句生成的例項範圍,關鍵字generate endgenerate用來指定該範圍。...