c - 将指针(字符串)深入传递给函数的方式

标签 c pointers

我遇到了一些困境。在本例中,我想编辑函数中的字符串。我的问题是,在下降时使用 *****ptr 感觉很奇怪。有没有办法以更正确的方式做到这一点?

伪代码:

// all funX return array length
int fun1(int **ptr){
    //some READ/WRITE on pointers, like mallocs, giving value etc.
    int len = 0;
    len = fun2(&ptr);
    return len;
}

int fun2(int ***ptr){
 // some more READ/WRITE on pointers, like mallocs, giving value etc.
 // what about going even deeper?
}

int main(){
    int *someString = NULL;
    int len = 0;
    len = fun1(&someString);
    // some string operations
    free(someString);
return 1;
}

最诚挚的问候, 巫毒16。

最佳答案

无需每次都添加新的间接级别,只需将指针传递给下一个函数即可。

你想要这个:

int fun2(int **ptr) {
  // some more READ/WRITE on pointers, like mallocs, giving value etc.
  // what about going even deeper?

  *ptr = (int*)malloc(190);   // 190 is just some arbitrary length for test purposes
  return 190;
}


// all funX return array length
int fun1(int **ptr) {
  //some READ/WRITE on pointers, like mallocs, giving value etc.
  int len = 0;               // BTW you dont need to initialize to 0
  len = fun2(ptr);
  return len;
}


int main() {
  int *someString = NULL;
  int len = 0;               // BTW you dont need to initialize to 0
  len = fun1(&someString);
  // some string operations
  free(someString);
  return 1;
}

关于c - 将指针(字符串)深入传递给函数的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40720615/

相关文章:

c++ - C++ 库是否依赖于 C 库? (对于 GCC 和 linux 的情况)

c - 使用静态链接库中的枚举

c - 指向指针: What datatype with variable length strings?的指针

C 代码、指针及其内容。考试题

c++ - 什么是 PVOID 数据类型?

c - C中的动态数组导致段错误

c - GCC内联汇编中的等号g "=g"是什么意思/做什么?

我们可以为所有其他调用使用 pthreads 互斥锁锁定一个函数吗?

c - malloc() 函数的返回

c - 将新数据读取到函数内的指针参数中?