我應該使用一個函數爲變量賦值初始值,但不明白爲什麼我的代碼中的初始化函數沒有初始化a,b,c,它會給出一些垃圾數。此外,我應該使用一個旋轉函數使用變量a,b,c的靜態聲明,但由於它的靜態它不交換變量。我如何做到這一點?初始化變量的函數C
void init(int num1, int num2, int num3);
int main(void){
int a, b, c;
init(a, b, c);
printf("a=%d, b=%d, c=%d\n", a, b, c);
rotate();
return 0;
}
void init(int num1, int num2, int num3){
printf("Enter value for num1: ");
scanf("%d",&num1);
printf("Enter values for num2: ");
scanf("%d",&num2);
printf("Enter values for num3: ");
scanf("%d",&num3);
}
void rotate(void){
static int a,b,c;
int temp;
temp=a;
a=b;
b=c;
c=temp;}
對於c你需要傳遞變量地址(指針)來從函數內初始化它們。 – 2014-10-17 16:53:49
但我必須使用void init(int num1,int num2,int num3),而不是void init(int * num1,int * num2,int * num3),在這種情況下,我可以如何使用指針 – 2014-10-17 16:56:55
這不會使很有道理。它被傳遞的價值;它不是*和你傳遞的相同'numN'。 – ChiefTwoPencils 2014-10-17 16:58:12