c - 在 C 中处理多个函数中的指针

标签 c pointers c99

我正在尝试从现有代码中创建函数以使其更清晰,但我遇到了一些问题:

以前是:

int foo(char * s, char * t, char ** out) {
  int val = strcmp(s, t);
  if (val == 0) {
     *out = strdup(s);
     return 1;
  } else {
     *out = strdup(t);
     return 5;
  }
  return 0;
}

现在我有:

int foo(char * s, char * t, char ** out) {
  someFunction(s, t, out);
  printf("%s", *out);
  return 0;
}

int someFunction(char *s, char * t, char **out) {

  int val = strcmp(s, t);
  if (val == 0) {
     *out = strdup(s);
     return 1;
  } else {
     *out = strdup(t);
     return 5;
  }
  return 0;
}

当我尝试执行 printf 时,出现段错误。 someFunction 应该期待 *out 吗?我想我还是很困惑。

最佳答案

如果我理解您的意图,则此代码是“正确的”。我假设你正在做一些事情

char *s = "foo";
char *t = "bar";
char *out;
foo(s, t, out);

当你真正想要的时候

char *s = "foo";
char *t = "bar";
char *out;
foo(s, t, &out);  // Note the & which passes the address of a char* to be manipulated

关于c - 在 C 中处理多个函数中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5628379/

相关文章:

C: 复制一个 char *指针到另一个

c - 为什么 strcpy 上没有段错误?

c - 从Fortran 90调用用C编写的客户端程序

c - 如果存储了 Thrust device_vector 的 .begin() 迭代器,它在 resize() 之后是否仍指向正确的位置?

c - Swift3:将原始指针转换为 Int(指针本身就是 int 值,不指向任何地方!)

C++ 和运算符优先级

c - scanf ("%c") 调用似乎被跳过

c++ - 如何优化矩阵乘法 (matmul) 代码以在单个处理器内核上快速运行

C99 如何将简单指针转换为可变长度的多维数组?

c - va_copy() 是否需要 va_end()?