将指针(字符串)传递给函数的方式
问题描述:
我有一些dillema。我想在这个例子中编辑函数中的字符串。我的问题是,下降时使用***** 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;
}
最好的问候, voodoo16。
答
每次只需将指针传递给下一个函数,不需要每次都添加一个新的间接级别。
你想这样的:
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;
}
你只需要一个间接层,不管你有多少次传球原指针的地址周围。 –
你的代码中没有字符串! –
请详细了解什么是指针。这只是一个地址。当有人向另一个人发送你的地址时,他不会提供你的地址(?)的地址,而是你给予他的地址。 – Boiethios