访问使用Malloc创建的数组

访问使用Malloc创建的数组,c,arrays,malloc,C,Arrays,Malloc,这有什么问题? 为什么它不起作用?其显示分段故障(堆芯倾倒) 我们不能使用a[I] #include<stdio.h> int main() { int *a,i,n; scanf("%d",&n); *a=malloc(n*sizeof(int)); for(i=0;i<n;i++) a[i]=i; free(a); return(0); } #包括 int main() { int*a,i,n; scanf(“%d”和“

这有什么问题? 为什么它不起作用?其显示分段故障(堆芯倾倒) 我们不能使用
a[I]

#include<stdio.h>

int main()
{
  int *a,i,n;

  scanf("%d",&n);

  *a=malloc(n*sizeof(int));

  for(i=0;i<n;i++)
    a[i]=i;

  free(a);

  return(0);
}
#包括
int main()
{
int*a,i,n;
scanf(“%d”和“&n”);
*a=malloc(n*sizeof(int));

对于(i=0;i您正在将
a
指向的内存地址设置为malloc返回的地址。由于
a
尚未初始化,您正在将内存的未定义部分设置为malloc返回的地址

*a=malloc(n*sizeof(int));
相反,设置指针本身

a=malloc(n*sizeof(int));

您正在将
a
指向的内存地址设置为malloc返回的地址。由于
a
尚未初始化,因此您正在将内存的未定义部分设置为malloc返回的地址

*a=malloc(n*sizeof(int));
相反,设置指针本身

a=malloc(n*sizeof(int));

您正在将
a
指向的内存地址设置为malloc返回的地址。由于
a
尚未初始化,因此您正在将内存的未定义部分设置为malloc返回的地址

*a=malloc(n*sizeof(int));
相反,设置指针本身

a=malloc(n*sizeof(int));

您正在将
a
指向的内存地址设置为malloc返回的地址。由于
a
尚未初始化,因此您正在将内存的未定义部分设置为malloc返回的地址

*a=malloc(n*sizeof(int));
相反,设置指针本身

a=malloc(n*sizeof(int));
*a=malloc(n*sizeof(int));
应该是
a=malloc(n*sizeof(int));

malloc()
分配存储并返回指向第一个字节的指针

As
a
is指针变量应指向地址

其中as
*a
在这种情况下是不正确的,因为
*
以及指针用于反引用。

*a=malloc(n*sizeof(int));
应该是
a=malloc(n*sizeof(int));

malloc()
分配存储并返回指向第一个字节的指针

As
a
is指针变量应指向地址

其中as
*a
在这种情况下是不正确的,因为
*
以及指针用于反引用。

*a=malloc(n*sizeof(int));
应该是
a=malloc(n*sizeof(int));

malloc()
分配存储并返回指向第一个字节的指针

As
a
is指针变量应指向地址

其中as
*a
在这种情况下是不正确的,因为
*
以及指针用于反引用。

*a=malloc(n*sizeof(int));
应该是
a=malloc(n*sizeof(int));

malloc()
分配存储并返回指向第一个字节的指针

As
a
is指针变量应指向地址


其中as
*a
在本例中是不正确的,因为
*
连同指针一起用于反引用。

请启用编译器警告;应该有什么东西在向您尖叫:

*a=malloc(n*sizeof(int));
上面说:

  • 分配一些内存
  • 将该地址分配给
    a
    指向的整数(未初始化且指向未知位置)
  • 一个
    本身仍然没有什么特别的意义

    然后:

    写入那个随机空间

    你想说:

    a = malloc(n * sizeof(int));
    

    请启用编译器警告;应该有东西在向您尖叫:

    *a=malloc(n*sizeof(int));
    
    上面说:

  • 分配一些内存
  • 将该地址分配给
    a
    指向的整数(未初始化且指向未知位置)
  • 一个
    本身仍然没有什么特别的意义

    然后:

    写入那个随机空间

    你想说:

    a = malloc(n * sizeof(int));
    

    请启用编译器警告;应该有东西在向您尖叫:

    *a=malloc(n*sizeof(int));
    
    上面说:

  • 分配一些内存
  • 将该地址分配给
    a
    指向的整数(未初始化且指向未知位置)
  • 一个
    本身仍然没有什么特别的意义

    然后:

    写入那个随机空间

    你想说:

    a = malloc(n * sizeof(int));
    

    请启用编译器警告;应该有东西在向您尖叫:

    *a=malloc(n*sizeof(int));
    
    上面说:

  • 分配一些内存
  • 将该地址分配给
    a
    指向的整数(未初始化且指向未知位置)
  • 一个
    本身仍然没有什么特别的意义

    然后:

    写入那个随机空间

    你想说:

    a = malloc(n * sizeof(int));
    

    应该是a=malloc,删除*1。做一点缩进。2.打开编译器警告。-行
    *a=malloc(n*sizeof(int));
    不正确。3.检查
    scanf
    函数的返回值应该是a=malloc,删除*1。做一点缩进。2.打开编译器警告。-行
    *a=malloc(n*sizeof(int));
    不正确。3.检查
    scanf
    函数的返回值应为a=malloc,删除*1.进行一点缩进。2.打开编译器警告。-行
    *a=malloc(n*sizeof(int));
    不正确。3.检查
    scanf
    函数的返回值应该是a=malloc,去掉*1.做一点缩进。2.打开编译器警告。-行
    *a=malloc(n*sizeof(int));
    不正确。3.检查
    scanf
    的返回值function@ryyker:谢谢:)@瑞克:谢谢:)@瑞克:谢谢:)@瑞克:谢谢:)