免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: boylitao
打印 上一主题 下一主题

快看啊,多层指针传递问题!!!!!!!!!!!!!! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2004-09-08 12:39 |只看该作者

快看啊,多层指针传递问题!!!!!!!!!!!!!!

原帖由 "aero" 发表:
C语言的函数是值传递,不管这个变量是什么,都不能改变,但是,这个变量如果是个地址,那么从这个地址找到的数据就可以改变,但是由于这个地址是这个变量的值,所以这个地址也就不能改变。

呵呵,其实,根本不用?.........


精辟!

论坛徽章:
0
12 [报告]
发表于 2004-09-08 13:51 |只看该作者

快看啊,多层指针传递问题!!!!!!!!!!!!!!

char **p;

char s[7][80];

p=str;

这样复制怎么不行啊!!!!!!!!!!!!!!!

论坛徽章:
0
13 [报告]
发表于 2004-09-08 14:03 |只看该作者

快看啊,多层指针传递问题!!!!!!!!!!!!!!

多谢zjqyb的启发
我的程序问题解决了。
#include <stdio.h>;
void fun(char ***p)
{
int i,j;

*p=(char **)malloc(sizeof(char *)*4);

for(i=0;i<4;i++)
(*p)=(char *)malloc(sizeof(char)*40);
strcpy((*p)[0],"test1";
strcpy((*p)[1],"test2";
strcpy((*p)[2],"test3";
strcpy((*p)[3],"test4";
for(i=0;i<4;i++)
printf("p[%d] is [%s]\n",i,(*p));
}

void main()
{
char ***pp;
int i;
fun(pp);

for(i=0;i<4;i++)
printf("pp[%d] is [%s]\n",i,(*pp));
}

论坛徽章:
0
14 [报告]
发表于 2004-09-08 14:57 |只看该作者

快看啊,多层指针传递问题!!!!!!!!!!!!!!

#include <stdio.h>;

void fun(char ***p)
{
        int i=0;

        *p=(char **)malloc(sizeof(char *)*4);

        for(i=0;i<4;i++)
        (*p)=(char *)malloc(sizeof(char)*40);

        strcpy((*p)[0],"test1";
        strcpy((*p)[1],"test2";
        strcpy((*p)[2],"test3";
        strcpy((*p)[3],"test4";
        for(i=0;i<4;i++)
        printf("p[%d] is [%s]\n",i,(*p));
}

void main()
{
        char **pp;
        int i;

        fun(&pp);
        for(i=0;i<4;i++)
        printf("pp[%d] is [%s]\n",i,pp);
        exit(0);
}

论坛徽章:
0
15 [报告]
发表于 2004-09-08 15:39 |只看该作者

快看啊,多层指针传递问题!!!!!!!!!!!!!!

还忘了释放内存了
不知道释放内存的顺序是怎样的。
从外向里释放

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
16 [报告]
发表于 2004-09-08 15:58 |只看该作者

快看啊,多层指针传递问题!!!!!!!!!!!!!!

没有顺序,用malloc和calloc申请的内存就一定要释放那个指针。

论坛徽章:
0
17 [报告]
发表于 2004-09-08 16:37 |只看该作者

快看啊,多层指针传递问题!!!!!!!!!!!!!!

char **p;

char s[7][80];

p=str;

这样复制怎么不行啊!!!!!!!!!!!!!!!

对于
int fun(char **p)

main()
{
    char s[3][4];

     fun(s)
....
}
也不行啊

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
18 [报告]
发表于 2004-09-08 16:59 |只看该作者

快看啊,多层指针传递问题!!!!!!!!!!!!!!

当然不行了,数组名是一个值(不是指针),怎么可以给一个值开辟空间呢?你在fun里面是要开辟空间的!你开辟了空间,那main里面的数组空间怎么办?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP