c - 函数不断返回0

标签 c pointers

我有一个相互嵌套的三个函数,它们使用与我的代码中所示相同的输入,每次在传递这三个函数后打印输入时,我都会得到“0”作为值。

我尝试删除“free()”,因为我认为这是因为我的输入得到 0 作为值,但如果我这样做,代码就会卡住。

char passcode[20];

void configuration(int **d, char *c) {
  *d = malloc(sizeof(int));
  **d = 1;

  readn(*d, c);

  return;
}

void readn(int *d, char *c) {
  *d = 2;

  configuration_SYS(d, c);


  return;
}

void configuration_SYS(int *d, char *c) {
  strcpy(c, "1234");
  *d = 3;

  return;
}

void main() {
  int *Timeout;

  configuration(&Timeout, passcode);

  printf("%d\n", *Timeout);
  printf("%s", passcode);
}

当我 printf 两个变量时,我期望得到一个不同于 0 的值。 超时应等于 6,密码 =“1234”。

最佳答案

  • 您不需要每次使用指针时都使用malloc()malloc() 分配空间供您使用。 注意:此空间不一定已初始化(意味着数据可以是任何值)
  • 无需在 void 函数末尾添加 return;。右大括号将为您返回。
  • 您使用两个参数调用 configuration_SYS(char* abc, int* d, char* c),但该函数需要三个参数。

事实上,我无法编译这个程序。我不知道为什么它会为你打印 0。我会努力创建一个 Minimal Complete Verifiable Example

关于c - 函数不断返回0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53952016/

相关文章:

c - 将指针数组作为 const 参数传递

C strcmp - 比较由 char 和 char* 声明的字符串

c - C 的新手 : Storing Structures in an Array

c - 返回指向多维数组的指针

objective-c - 这是三元条件吗? : correct (Objective) C syntax?

c - 尽管分配了指针,但指针仍指向 Null

C 计算递归序列 - 预期表达式错误

c++ - 在指针中使用 **

c - 在 C 中 move 当前堆栈帧

c++ - 如何将指针重置为特定的数组位置?