Chinaunix
标题:
不是蛋疼,而是真遇到是三级指针的问题
[打印本页]
作者:
RUNONMIPS
时间:
2013-01-11 20:20
标题:
不是蛋疼,而是真遇到是三级指针的问题
程序调用逻辑是这样:
int func2(char ***fbuf2) {
char data[100];
//data[]赋值操作
memcpy((**fbuf2), data, 100);
}
int func1(char **fbuf1) {
func2(&(*fbuf1));
}
int main() {
...
char *tmpbuf = (char *)malloc(100);
if(tmpbuf == NULL) {
return;
}
func1(&tmpbuf);
}
func2中的赋值该怎么写,上面的写法不对,执行的时候段错误,,现在脑子浆糊了。再次声明我不是闲得蛋疼搞这么个问题,,而是实际中需要这么操作,,望大家赐教一下下。。
作者:
hellioncu
时间:
2013-01-11 20:23
从你这些代码看,连两级指针都不需要用
作者:
RUNONMIPS
时间:
2013-01-11 20:26
这个调用过程是不能改的。。该怎么弄。。
回复
2#
hellioncu
作者:
captivated
时间:
2013-01-11 20:30
从LZ的函数逻辑来看, 一级指针就够用了.
int func2(void *buf)
{
char data[100];
memcpy(buf, data, 100);
}
int func1(void *buf)
{
func2(buf);
}
int main(void)
{
char *buf = malloc(100);
func1(buf);
free(buf);
}
作者:
RUNONMIPS
时间:
2013-01-11 20:36
这样不行的,段错误。。
回复
4#
captivated
作者:
captivated
时间:
2013-01-11 20:54
回复
5#
RUNONMIPS
我的那段会段错误? 确定吗{:3_182:}
作者:
pmerofc
时间:
2013-01-11 21:06
提示:
作者被禁止或删除 内容自动屏蔽
作者:
nketc
时间:
2013-01-11 21:39
RUNONMIPS 发表于 2013-01-11 20:36
这样不行的,段错误。。回复 4# captivated
lz怪叔叔木有错。是你已步入魔道。
作者:
timothyqiu
时间:
2013-01-11 21:45
本帖最后由 timothyqiu 于 2013-01-11 21:45 编辑
int func2(char ***fbuf2) {
...
}
int func1(char **fbuf1) {
func2(&(*fbuf1)); /* 写 &(*fbuf1) 和写 fbuf1 一样*/
}
复制代码
你的 func2 要的是 char ***,你传给它的是 char **……
作者:
cokeboL
时间:
2013-01-11 22:21
别以为写的代码看上去难度大就是牛逼,有一种设计叫过渡设计
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2