gpt4 book ai didi

c - C语言中初始化变量的函数

转载 作者:行者123 更新时间:2023-11-30 21:49:05 25 4
gpt4 key购买 nike

我应该使用一个函数来为变量分配初始值,但不明白为什么我的代码中的init函数没有初始化a、b、c,它给出了一些垃圾数字。另外,我应该使用使用变量 a, b, 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 中,通过地址传递非数组变量是允许函数更改它的唯一方式。

您对函数参数的使用可以像这样纠正......
将函数更改为:

void init(int *num1, int *num2, int *num3){

printf("Enter value for num1: ");
scanf("%d",num1);//because argument is already a
//pointer, you do not need to de-reference (&)
printf("Enter values for num2: ");
scanf("%d",num2);
printf("Enter values for num3: ");
scanf("%d",num3);
}

并且,更改调用:

 init(a, b, c); 

至:

 init(&a, &b, &c); 

关于c - C语言中初始化变量的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26429801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com