为什么b数组不能复制整个数组?

时间:2015-12-07 00:33:34

标签: c pointers memory-leaks

我在想这是因为b指向a的第一个元素,因此它具有第一个元素的值。    现在,当b指向第一个元素时,我们可以访问数组中的所有值。

#include <stdio.h>
#include <stdlib.h>

int main(void) 
{
  int *b,*a={0,0,0,0,0},i;
  b=(int*)malloc(5*sizeof(int));
  b=a;
  a = NULL;
  for(i=0;i<5;i++)
  {
    printf("%d",*(b+i));
  }
  return 0;
}

1 个答案:

答案 0 :(得分:1)

你不能初始化int指针&#39; a&#39;这样,它的值就是内存地址而不是int。

您可以使用局部变量&#34; int a [] = {0,0,0,0,0}&#34;如果你不想要分配内存。

使用&#34; b = a&#34;你正在存储一个b的地址,并丢失以前分配的内存,你可以这样做:  &#34;对于(i = 0; I&小于5;我++)B [I] = A [1];&#34;