找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2621|回復(fù): 10
收起左側(cè)

為什么變量賦值必須寫在函數(shù)里。

[復(fù)制鏈接]
ID:709761 發(fā)表于 2023-1-14 09:27 | 顯示全部樓層 |閱讀模式
為什么
51hei圖片_20230114092627.png
51hei圖片_20230114092619.png
回復(fù)

使用道具 舉報

ID:1034262 發(fā)表于 2023-1-14 12:49 | 顯示全部樓層
不一定,函數(shù)外定義變量時可以同時賦值。
回復(fù)

使用道具 舉報

ID:629502 發(fā)表于 2023-1-14 14:23 | 顯示全部樓層
要是想在函數(shù)外賦值,要定義變量的時候進行初始化賦值,C語言本身就不允許你這種操作
回復(fù)

使用道具 舉報

ID:1061165 發(fā)表于 2023-1-14 15:12 | 顯示全部樓層
變量賦值不一定要在函數(shù)中進行,如果在函數(shù)外賦值必須要在定義變量的時候同時賦值,也就說定義與賦值要合成一條語句。因為程序是在main函數(shù)順序開始,需要哪個函數(shù)就會執(zhí)行該函數(shù),需要哪個變量就調(diào)用那個變量,若在本帖中圖2所示中打印c2[0].b并不會得到22的值,因為在編譯器看來你只是聲明了該變量未對其賦值,因為程序沒有執(zhí)行賦值那條語句。
回復(fù)

使用道具 舉報

ID:155507 發(fā)表于 2023-1-15 08:37 | 顯示全部樓層
函數(shù)外定義變量時可以同時賦值。
要是想在函數(shù)外賦值,要定義變量的時候進行初始化賦值 typedef-struct.jpg


回復(fù)

使用道具 舉報

ID:277550 發(fā)表于 2023-1-15 09:18 | 顯示全部樓層

面向函數(shù)的語言,所有語句,必須在函數(shù)內(nèi)。
回復(fù)

使用道具 舉報

ID:76471 發(fā)表于 2023-1-15 11:08 | 顯示全部樓層
寫在函數(shù)外是全局變量,用完后不釋放RAM,寫在函數(shù)內(nèi)是局部變量,退出函數(shù)就釋放RAM,如果MCU的RAM不多,如只有128個字節(jié),如果你定義的全局變量超過128字節(jié),你的程序運行會出錯。
回復(fù)

使用道具 舉報

ID:1061238 發(fā)表于 2023-1-15 18:00 來自觸屏版 | 顯示全部樓層
定義時初始賦值,重新賦值必須在函數(shù)內(nèi)發(fā)生了運算,既定規(guī)則,沒有道理可言
回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2023-1-15 21:40 來自觸屏版 | 顯示全部樓層
所謂的函數(shù)外賦值,還是在函數(shù)內(nèi),無非在一個隱藏的函數(shù),并被startup調(diào)用后賦值,從效率來講,還不如在main函數(shù)賦值來的快。你仿真一下,看看哪個快就知道了。
回復(fù)

使用道具 舉報

ID:1059989 發(fā)表于 2023-1-18 11:24 | 顯示全部樓層
因為c語言是基于函數(shù)的 ,只有函數(shù)里的代碼才能被正常調(diào)用執(zhí)行,在函數(shù)外的代碼,如非特殊處理是沒有機制去執(zhí)行的(startup調(diào)用main是特例)。所以函數(shù)外只能定義變量,定義時可以賦初值,但不能單純地賦值。
回復(fù)

使用道具 舉報

ID:1061377 發(fā)表于 2023-1-18 16:56 | 顯示全部樓層
來學(xué)習(xí),結(jié)構(gòu)體的賦值,不是非常懂,但沒在外面賦值過。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表