gpt4 book ai didi

c - 从函数中的 argv 分配指针

转载 作者:太空宇宙 更新时间:2023-11-04 07:09:52 25 4
gpt4 key购买 nike

我正在尝试从程序 **argv 中正确分配一个指针。当我在主函数中分配 data 时它工作正常,但是当我试图将该逻辑放入一个单独的函数时它却没有。

我在这里做错了什么?

void parse_args(char *argv[ ], unsigned char *data, *data_len,  *nprocs){

data = (unsigned char *)argv[1];
*data_len = strlen(argv[1]);
*nprocs = atoi(argv[2]);
}

int main(int argc, char **argv) {
unsigned char *data;
int data_len;
int nprocs;

// this doesnt work (for data)
parse_args(argv, data, &data_len, &nprocs)

// this works (for data)
data = (unsigned char *)argv[1];
}

最佳答案

这一行

data = (unsigned char *)argv[1];

修改main 的本地data 的本地副本,因为包括指针在内的所有参数都是按值传递的。如果你想修改 main 中的 data,通过指针传递它(即你现在需要一个指向指针的指针):

void parse_args(char *argv[ ], unsigned char **data_ptr, int *nprocs) {
...
*(data_ptr) = (unsigned char *)argv[1];
...
}

关于c - 从函数中的 argv 分配指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29274054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com