Re: [問題] 全域變數
※ 引述《scws (小涼)》之銘言:
: 全域變數的問題
: 如下
: int x=1,y=1,z=z;
全域後只能是常數
: int v=x*y*z;
這一定不行
: double total[v];
GCC可以 VC不行 但強列建議不要這樣搞
: void main(){
: }
: 上述的 xyz 我會做改變
: compiler後
: 關於 v 出現 "initializer element is not constant"
: total[v] 出現 "variable-size type declared outside of any function"
: 我將 v 給一個常數 才可以過 total[v]則不行
: 兩邊的v 要都給一個常數 才都過
: 我以為全域跟區域變數一樣 有宣告 可以間接給數值(如上)
全域後只能是常數
很多編譯器可以是無引數的函數,但強烈建譯不要這樣搞
int Volume(void)
{
return x*y*z;
}/*Volume*/
int v = Volume();
: 請問是兩著差在哪裡? 還是我哪個觀念錯?
: 因為我需要他們是外部變數 (我是寫成專案的方式) 所以把它們寫成全域函數
: 而我希望 v 是隨我想要 xyz 變
: 謝謝
能不用全域就不要用全域,不然到時代碼一長 會自己錯亂
#include <stdlib.h> /*一定要加,malloc/free在這裡*/
#define X_VALUE 1
#define Y_VALUE 1
#define Z_VALUE 1
int Volume(int x, int y, int z)
{
return x*y*z;
}/*Volume*/
int main(void)
{
int x, y, z;
int v;
double *pTotal; /*背起來這語法*/
x = X_VALUE;
y = Y_VALUE;
z = Z_VALUE;
v = Volume(x, y, z);
pTotal = (double*)malloc(v*sizeof(double)); /*背起來*/
:
:
free(pTotal); pTotal = NULL; /*用完v加上這條,背起來*/
return 0;
}/*main*/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 182.235.79.253
→
04/20 16:06, , 1F
04/20 16:06, 1F
推
04/20 16:23, , 2F
04/20 16:23, 2F
※ 編輯: WeBurn 來自: 182.235.79.253 (04/20 16:41)
→
04/20 16:41, , 3F
04/20 16:41, 3F
→
04/20 21:46, , 4F
04/20 21:46, 4F
→
04/20 21:47, , 5F
04/20 21:47, 5F
→
04/20 21:48, , 6F
04/20 21:48, 6F
推
04/21 00:55, , 7F
04/21 00:55, 7F
→
04/21 00:56, , 8F
04/21 00:56, 8F
→
04/21 16:38, , 9F
04/21 16:38, 9F
推
04/22 01:10, , 10F
04/22 01:10, 10F
→
04/22 01:10, , 11F
04/22 01:10, 11F
討論串 (同標題文章)