C 不傳引數修改函式外面的變數pass

2021-09-01 23:23:44 字數 458 閱讀 4322

今天一朋友給我看了一道題,很是鬼畜的題目。雖然知道應該沒有人會這麼寫**,但是這裡面的邏輯還是很值得了解學習的。

**填空:填寫pass()函式。

要求輸出:456

#include "stdio.h"

void pass()

int main()

剛看到這道題,心裡一句mmp。

仔細思考,原來是考的記憶體位址的知識。

廢話不多說,直接上**

#include "stdio.h"

void pass()

*p = 456; // 修改當前位址的值,也就是x的值。

}int main()

我們知道c語言的變數位址是先存放高位址,逐漸變小。棧區在堆區上面,也就是棧區的位址大於堆區。

使用p使用向上加來尋找x的位址。

C語言變引數函式

include includeusing namespace std int sum int cnt,va end args return ans int main 1.printf 和scanf 就是變引數函式,變引數函式的第乙個引數不可省略,並且這第乙個引數型別必須確定.如上,sum函式的第乙個...

c語言陣列放在main函式裡面和外面的區別

最近a演算法題的時候碰到一道題 乙個數列前三項都為1,之後每項的值等於前三項之和,求第20193024項的最後4位數字。一開始寫的 如下 結果一直爆 terminated due to signal segmentation fault 11 這個錯誤,改了好久沒改出來。之後在stackoverfl...

C語言陣列放到主函式外面和裡面的區別

今天寫oj時,發現了個小問題,記錄一下。方便後期查詢!oj題 include intmain printf d n num for i 1 i 1000 i return0 乍一看,沒毛病。但一執行 然後就瘋狂地debug,結局竟然只需要 對!將陣列移到外面!可是,why?先介紹一下棧區 stack...