gpt4 book ai didi

c - 用指针和地址更新整数

转载 作者:行者123 更新时间:2023-11-30 19:16:26 25 4
gpt4 key购买 nike

因此,下面的函数应该将 1 加到 n 上,并在每次 scanf 读取 1 时打印出更新后的 n。但它没有更新并不断打印 1

#include <stdio.h>
#include <stdlib.h>

void add_one(int *n);
void command(int x);
int
main(int argc, char *argv[]) {

int i;

while (scanf("%d", &i) == 1){
command(i);
}
return 0;

}

void add_one(int *n){
int i = *n;
i++;
*n = i;
printf("%d\n", i);
}

void command(int x){
int n = 0;

if (x == 1){
add_one(&n);
}
else{
return;
}
}

最佳答案

您将 n 作为 command 中的局部变量。每次从 main 调用 command 时,它都会从 0 开始。解决此问题的一种方法是将声明移至 main 并将其传递给 command:

#include <stdio.h>
#include <stdlib.h>

void add_one(int *n);
void command(int x, int *n); /* second parameter added */
int
main(int argc, char *argv[]) {

int i, n = 0; /* n added */

while (scanf("%d", &i) == 1){
command(i, &n); /* &n added */
}
return 0;

}

void add_one(int *n){
int i = *n;
i++;
*n = i;
printf("%d\n", i);
}

void command(int x, int *n){
/* int n = 0; declaration moved to main */

if (x == 1){
add_one(n); /* removed & since parameter n already is a pointer */
}
else{
return;
}
}

关于c - 用指针和地址更新整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30373136/

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