C語言。程式執行過程中變數的值消失了。為什麼?

2025-07-18 23:10:16 字數 4916 閱讀 7143

1樓:

fun(tt)表示將tt的值傳給形式引數,這個值是字串"aaaaaaa"的首位址,呼叫函式可以改變字串的內容,沒有什麼奇怪的。

2樓:網友

在傳入 fun()之前tt 內容已經被修改,就是tt的記憶體被覆蓋了,說明中間某個地方有溢位操作。你可以除錯執行,把tt的位址放到記憶體裡檢視,然後單步執行,單步到某個地方,tt的記憶體變了,那就是這個地方有問題了!!

3樓:網友

傳過去的只是乙個指標。根本沒有把那個字串陣列傳過去。字串陣列在靜態**曲。

4樓:網友

fun(tt)

這個函式里改變了tt的記憶體位址的值。

函式發出來。

xhzzhao說的對,資料量太大,申請字串太小,記憶體溢位了。

5樓:j**a皇帝

你好:對於陣列中的值的改變有很多的原因。

對於你的問題我也不知道錯在哪。

你再檢查一下你的程式,可能是遺漏了。或者忽略了。

它自己是不會變的。更不會消失。可能中間的語法有什麼錯誤。

在c語言中,程式執行期間,其值可以改變的量叫做()

6樓:教育仁昌

在c語言中,程式執行期間,其值可以改變的量叫做變數。

當在窗體中設計使用者介面時,c語言會自動為產生的物件(包括窗體本身)建立一組變數,即屬性變數,併為每個變數設定其預設值。這類變數可供使用者直接使用,比如引用它或給它賦新值。使用者也可以建立自己的變數,以便存放程式執行過程中的臨時資料或結果資料等等。

c語言執行過程中修改變數

7樓:匿名使用者

c語言是一種強型別語言,要求在使用資料前需要對資料的型別進行宣告;

變數的定義就是建立乙個變數,這個變數按照指定的資料型別分配一塊記憶體空間並給它取上乙個名字,這個名字就是變數名,變數名和分配的記憶體塊是繫結起來的,程式設計師通過變數名對這塊記憶體進行存取操作。所以如果修改了變數名就不知道該變數所指的記憶體塊是**了。

變數分為全域性變數,區域性變數,靜態變數等,每種變數的存放位置是不一樣的;如全域性變數存放在靜態儲存區 ,區域性變數存放在棧裡做臨時儲存。

c語言中的全域性變數為什麼在程式執行過程中自動改變了

8樓:風若遠去何人留

有兩種可能。

一種是 在某處 對其賦值了。

因為全域性變數是每個函式都可以訪問的 有可能在某處 對它賦值 你沒注意到。

另一種可能 就是出現了越界,導致某個操作,訪問了全域性變數的記憶體並改變了值。 這個就比較難查了。

c語言中,變數到底是個什麼概念?

9樓:小耳朵愛聊車

c語言中的變數是指在程式執行時其值可以改變的量,變數的功能就是儲存資料。

變數有三個基本要素:

變數名:每乙個變數都應該有乙個名字。

變數的資料型別:每乙個變數都應具有一種資料型別(在定義時指定)記憶體中佔據一定的儲存空間。

變數的值:變數對應的存貯空間中所存放的數。

10樓:如之人兮

變數的定義:

變數是指在程式執行時其值可以改變的量。變數的功能就是儲存資料。在程式中使用的變數名、函式名、標號等統稱為識別符號。除庫函式的函式名由系統定義外,其餘都由使用者自定義。

#include

int main()

int year;

year=2014;

printf("welcome to !");

return 0;

其中year是乙個int型別的變數,而2014是常量,即乙個數字。 c規定,識別符號只能是字母(a~z,a~z)、數字(0~9)、下劃線(_)組成的字串,並且其第乙個字元必須是字母或下劃線。且不能與c語言的關鍵字重名。

11樓:帳號已登出

計算機中,變數其實只不過是程式可操作的儲存區的名稱。

c 中每個變數都有特定的型別,型別決定了變數儲存的大小和佈局,該範圍內的值都可以儲存在記憶體中,運算子可應用於變數上。

變數的名稱可以由字母、數字和下劃線字元組成。它必須以字母或下劃線開頭。大寫字母和小寫字母是不同的,因為 c 是大小寫敏感的。

c 語言也允許定義各種其他型別的變數,比如列舉、指標、陣列、結構、共用體等等,這將會在後續的章節中進行講解,本章節我們先講解基本變數型別。

數學變數與函式:

常量與變數(constant and variate)是數學中反映事物量的一對範疇。常量亦稱「常數」,是反映事物相對靜止狀態的量;變數亦稱「變數」,是反映事物運動變化狀態的量。

數學中表徵事物量的一對概念。在事物的特定運動過程中,某量若保持不變,則稱之為常量;反之,則稱之為變數。變數分為自變數和因變數,亦稱函式。

12樓:吉祥二進位

c語言中的變數實際上就是一段虛擬記憶體區域。

虛擬記憶體是計算機系統記憶體管理的一種技術。它使得應用程式認為它擁有連續的可用的記憶體(乙個連續完整的位址空間),而實際上,它通常是被分隔成多個實體記憶體碎片,還有部分暫時儲存在外部磁碟儲存器上,在需要時進行資料交換。目前,大多數作業系統都使用了虛擬記憶體,如windows家族的「虛擬記憶體」;linux的「交換空間」等。

可以把虛擬記憶體當成乙個大的位元組陣列。每乙個元素佔1個位元組,每1個位元組有1個位址。

13樓:網友

聽我慢慢給你解答:

其值可以改變的量稱為變數.程式中所用到的每乙個變數都應該有乙個名字作為標記,它是屬於使用者識別符號.變數名的命名規則應該遵守識別符號命名規則.

乙個變數實質上是代表了記憶體中的某個儲存單元.程式中的變數a,就是指用a命名的某個儲存單元,使用者對變數a進行的操作就是對該儲存單元進行的操作;給變數a賦值,實質上就是把資料存人該變數所代表的記憶體單元中.

c語言中規定,程式中所要用到的變數應該先定義後使用.通常,對變數的定義放在函式的開頭部分,但也可以放在函式的外部或複合語句的開頭.

像常量一樣,變數也有型別的區分,如整形變數、實型變數、字元型變數等。c語言在定義變數的同時說明該變數的型別,系統在定義時就能根據定義及其型別為它分配相應數量的儲存空間。

14樓:網友

不是不完全一致,是幾乎完全不同。它只是在程式設計發展的初期借用了數學上的術語,但是發展到後來,功能完全不同了。

變數就是對記憶體單元的乙個引用的別名,如果我讓你使用記憶體位址存資料很難看的,都是 23a3:0100 這種東西,你會願意看嗎?你需要存的時候起個別名,像「name」,這多方便清楚?

函式嘛,等你理解變數以後再說吧。

15樓:幸福的小雨

他們說的都太複雜,你就用笨方法記。變數就是可變化的量(可以在程式的執行過程中改變).而常量就是靜態的量,是不可以改變的(在程式的執行過程中不可以改變).

就是這些了,能理解就理解,這已經是最簡單的解釋了。

16樓:網友

變數就是記憶體,我們對變數操作,其實就是對記憶體操作。

17樓:曲新厹

所在記憶體位址的乙個代號而已。位址中存的量可隨時改變。

c語言中的靜態變數到底是怎麼回事?不是說static 後面變數值是不變的,直到程式結束才釋放,那後面的有涉

18樓:古爾格

靜態變數的靜態是指變數佔用的記憶體位址不釋放,也就是說它的位址它從頭到尾一直佔著,不給其他記憶體單元佔用而已,其本身的值是可以改變的。動態的變數的話,比如呼叫函式體裡定義的變數,在函式執行後便釋放出去,把有用的位址資源貢獻給其他量,釋放以後如果你用指標來列印這個位址的值的話,就很有可能不是原來的值了。

19樓:汗興邦

這個問題應該從變數生存期討論。

一般自動變數的生存期會隨著函式呼叫的結束而結束。而靜態變數函式呼叫結束時仍然存在,直到整個程式執行結束時才結束。

具體的內容和例項可以仔細看一下書上的詳細講解。

c語言中,靜態變數的值會在程式結束時釋放,在程式執行過程中會一直保持著,那麼什麼情況下叫程式結束?

20樓:0酷愛拿鐵

執行完呼叫不叫程式結束,編譯 執行 後 關閉了程式 叫程式結束。

21樓:愛思魚

一般就是main(){函式結束,簡單理解就是 除錯視窗關閉後這個變數就不佔用記憶體了。

c語言中用函式交換兩個變數的值?

22樓:苑人考尹

這個無法交換資料。

c語言函式引數的基本規則是值傳遞,所以傳遞時只能實現實參向形參的單向的、值的傳遞。這就是為什麼需要使用指標才能實現值交換的原因。

23樓:網友

輸入變數:x,y

#include

void main()

void f(int*xp,int*yp )呼叫函式後,x,y的值就被交換了。

24樓:網友

應該在void swap(int x,int y)

裡新增一句,如上。

c語言程式執行過程中區域性變數是不是一直變化的

25樓:風雨飄灑時

c語言中區域性變數是在「{」和「}」之間定義的變數。該變數起始於變數定義,結束於「}」

區域性變數在結束前都是有效的,可通過變數名去訪問它,變不變化看自己的程式設計。

區域性變數結束後,無法通過變數名去訪問它。

26樓:周生

區域性變數在它所在的區域性結束之後就銷燬了,至於變不變看你是否改變它了。

27樓:網友

這個變不變得看你的程式是怎麼組織的了,只有你程式讓它變他才會變。明白了麼。

c語言執行以下程式段後m的值是,C語言,執行以下程式段後,m的值是。staticinta7,4,6,3,10intm,k,ptr

答案 d 分析 ptr a 0 指標bai指du向陣列首地址zhi,ptr k 指標指向陣列第k個存 dao儲單元 m ptr k 等價於專 m a k 屬a k 與m的最小數並賦值給m 故此程式段是去陣列a中元素的最小值 如還有不懂的地方可以密我 d 3 陣列a中的最小值 c語言,執行以下程式段後...

執行以下程式段後,變數a,b,c的值分別是

您好,很高興能為您解決問題。int x 10,y 9 宣告變數x 10,y 9 int a,b,c 宣告變數a,b,c a x y x y if x y x else y b x 給b賦值為x c y 給c賦值為y 分析 x 10 y 9 a 如果 x 等於 y 則是 x 也就是9,這時x是8 否則...

下面程式的執行結果是,C語言 下面程式的執行結果是()

答案選d。strcat a,b 結果 a 為 ablmnp,b 為 lmnp。while a i 0 b i a i 一開始 i 等於 0,但在 while 的迴圈條件中將 i 自增,所以第一次進入迴圈體時 i 等於 1,於是就有了最終結果 lblmnp。c語言 下面程式的執行結果是 因為i 3 進...