我試圖做的是將增加的一個功能,i通過一個每2秒值,然后使用該函式在我的main()顯示相關i的值array[]。我沒有看到我以為我會看到的行為,有誰知道為什么我看不到陣列值?我添加了列印陳述句以確認我正在正確遞增,并且他們看起來正在這樣做。我只是無法讓它在main()
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#define ARRAY_SIZE 3
#define var1 0x1000
#define var2 0x0100
#define var3 0x0200
#define var4 0x0300
int i_num(int i)
{
while(i<3)
{
if(i<2)
{
sleep(2);
i ;
//printf("This is the new value of array: %d\n", i);
}
else
{
sleep(2);
i = 0;
//printf("This is back to the original value of array: %d\n", i);
}
}
return i;
}
int main()
{
unsigned int array[ARRAY_SIZE] = {var1|var2, var1|var3, var1|var4};
printf("This is the value of array[0]: %d\n", array[i_num(0)]);
}
uj5u.com熱心網友回復:
這是陣列的新值:
您不會更改main函式中定義的陣列的值,只會更改函式中的區域變數i。我會從你的例子中抽象出來,因為它沒有太多意義。
- 修改呼叫函式中的變數。您需要使用參考(指向它的指標)
void foo(int *i)
{
(*i) ;
printf("*i in foo = %d\n", *i);
}
int main(void)
{
int p = 4;
foo(&p);
printf("p in main = %d\n", p);
}
結果:
*i in foo = 5
p in main = 5
但是如果不傳遞參考,則會修改區域變數:
void foo(int i)
{
(i) ;
printf("i in foo = %d\n", i);
}
int main(void)
{
int p = 4;
foo(p);
printf("p in main = %d\n", p);
}
結果:
i in foo = 5
p in main = 4
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/341516.html
