關於一道C的程式題糾結中啊

時間 2022-06-09 23:55:08

1樓:匿名使用者

樓主,我覺得你這道程式的問題就在於區域性變數作用域你沒考慮清楚!一般我們的程式裡,函式裡定義的變數或函式引數定義的變數都屬於區域性變數!而區域性變數的作用域是區域性的!

例如就這道題來說的話!你在函式fun裡面定義int* a,b,c; 他們都是區域性變數,雖然你在主函式呼叫了fun函式!可是這些變數的作用域不會作用到主函式裡面!

而是在fun函式呼叫完的那一刻就被撤銷了!也可以這樣說就是這道題裡面的fun函式根本就是沒用到的!你執行一下下面這道程式!

也許你就會明白了!

#include

#include

using namespace std;

void fun(int *a,int *b)void main()

2樓:孔明挑糞

#include

void fun(int *a,int *b)main()

這個才是5,3,3,5

首先你要明白fun()函式的意思,你原來那個fun()只交換a和b的地址,沒有改變內容。

#include

void fun(int *a)

void main(void)

你這個改變了內容嘛,主要是有*就可以改變內容。

3樓:

關於第一題:你可以這樣想

在void fun(int *a,int *b)裡因為c=a;a=b;b=c;只是改變了指標的地址,與*c=*a;*a=*b;*b=*c;不同,並沒有改變指標所指向地址的內容,所以出來的結果並沒有改變

第二題,也類似 因為在函式fun中已經經過*a=*a+1運算;改變了指標所指向的內容,所以結果就變為2了

希望對你有幫助

4樓:楓行天下

剛才那一道是指標,所謂指標是存放記憶體中某變數的地址,就像我剛才所說的,在函式呼叫後區域性變數就會消失! 而這一道呢! *a 已經是指記憶體中具體的某個變數了!

*a = *a+1;已經讓變數發生了改變了!所以在主函式是有影響到的,因此最終是2而不是1. 而剛才那道是指標變也就是地址變,而不是變數變!

地址變了之後就被撤銷! 所以不會影響到主函式裡面! 你再好好想想吧

5樓:1號密探

難道是fun函式沒有返回值?

確實糾結,

我怎麼認為結果應該是5353哩?

一道c語言讀程式題,一道c語言讀程式題 include stdio h main int k 4,m 1,p p func k,m printf d, ,p p func

首先輸出結果是 8,17 第二,你上面這個程式編譯不了的,有2個問題 1 函式的返回值型別沒寫 2 func 函式體放在了main 函式後面且沒再main 函式中宣告。第三,註釋該程式 include 標頭檔案 void main 修改1 增加了void int func int a,int b 第...

兩道C語言程式題求解,一道C語言程式題求解

時辰八點半 2 不採用函式就原始暴力地從頭開始逐個遍歷字串。對原始陣列個數從0索引到最後一個字元使用迴圈 當字元在 a z 或者在 a z 中時將該字元存到另一個定義了空間大小的字元陣列中並使該字元陣列索引 1,直到最後給該新得到的陣列新增結束符 0 並輸出即可 3 一樣從頭開始遍歷陣列,噹噹前字元...

關於C 的一道題

執行point p1 10,20 時建立物件p1,呼叫建構函式point int x 0,int y 0 輸出call the default constructor 執行point p2 p1 時是用已知物件p1初始化p2,所以要呼叫拷貝建構函式point point p 輸出call the c...