关于C++ 二级指针 作为函数参数 修改主函数数组

这个代码很简单,就是想测试一下怎样用二级指针指向数组的元素。我看网上写的很多的都是指向某个地址,而不是数组元素的地址。这个程序一运行就调错:2100,TEST3.exe中... 这个代码很简单,就是想测试一下 怎样用二级指针 指向数组的元素。
我看网上写的很多的都是指向某个地址,而不是数组元素的地址。
这个程序一运行就调错:2100,TEST3.exe 中的 0x0104151d 处有未经处理的异常: 0xC0000005: 写入位置 0xcccccccc 时发生访问冲突
void p (char *r);
void pp (char **rr);

int main()

{
char *x = (char *)malloc(8*sizeof (char));
p(x);
for (int i=0;i<=10;i++)
printf ("%c", x[i]);
free(x);
x=NULL;
return 0;
}

void p (char *r)
{
r=(char *)malloc(8*sizeof (char));
r[1] = 'o';
r[2] = 'y';
r[3] = 'x';
r[4] = 'z';
pp (&r);
}

void pp (char **rr)
{
*rr=(char *)malloc(8*sizeof (char));
*rr[5]= 'n';
*rr[6]= 'n';
*rr[7]= '\0';
}
和内存分配没有关系,加不加都失败。
展开
 我来答
百度网友63c8b9e
2014-11-21 · TA获得超过202个赞
知道小有建树答主
回答量:283
采纳率:0%
帮助的人:143万
展开全部
sizeof (char) 与sizeof (char*) 是不一样大的。
r=(char *)malloc(8*sizeof (char));
r 存的是指针啊,同学! 赋值应该 *r[1] = 'a'; 而且数组的第一个是r[0]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heptnaol
推荐于2016-01-27 · TA获得超过7263个赞
知道大有可为答主
回答量:7120
采纳率:78%
帮助的人:1841万
展开全部
第一个问题:
void pp (char **rr)
{
*rr=(char *)malloc(8*sizeof (char));
(*rr)[5]= 'n';//这个括号要加,否则出现内存写入异常,因为[]下标操作优先
(*rr)[6]= 'n';
(*rr)[7]= '\0';
}
第二个问题:
void p (char *r)
{
//r=(char *)malloc(8*sizeof (char));这个要删掉,r已经是有效内存,再次分配则换了一个地址
main里面什么也打印不出来。

第三个问题:*rr=(char *)malloc(8*sizeof (char));也要删掉,否则n n打印不出来。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式