我遇到了一些困境。在本例中,我想编辑函数中的字符串。我的问题是,在下降时使用 *****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/