关于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';
}
和内存分配没有关系,加不加都失败。 展开
我看网上写的很多的都是指向某个地址,而不是数组元素的地址。
这个程序一运行就调错: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';
}
和内存分配没有关系,加不加都失败。 展开
2个回答
展开全部
sizeof (char) 与sizeof (char*) 是不一样大的。
r=(char *)malloc(8*sizeof (char));
r 存的是指针啊,同学! 赋值应该 *r[1] = 'a'; 而且数组的第一个是r[0]
r=(char *)malloc(8*sizeof (char));
r 存的是指针啊,同学! 赋值应该 *r[1] = 'a'; 而且数组的第一个是r[0]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个问题:
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打印不出来。
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打印不出来。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询