我是C语言的新手.我在分配动态数组时遇到问题.
我曾经在循环之外分配内存a=(int*)malloc(5* sizeof(int));,所以每件事情都运行良好.现在我想在循环中逐个为每个元素分配内存malloc(),但代码不起作用.
我尝试过不同的选择,scanf("%d",a) &a++,scanf("%d",&a[i]);但不能成功.如果有人能告诉我我做错了什么并彻底向我解释这个概念,我将感激不尽.
我遇到问题的代码如下:
#include <stdio.h>
#include<stdlib.h>
int main()
{
int *a;
int i;
system("clear");
for(i=0;i<5; i++)
{
a=(int *)malloc(sizeof(int));
printf("%u",&a);
printf("please enter the element in array");
scanf("%d",a[i]);
}
for(i=0;i<5; i++)
{
printf("\nthe %d entry in the array %d",i,a[i]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
数组是单个"对象"(单个事物),它具有许多项目的空间,所有项目都是相同的类型.
您希望能够以某种方式一次分配一个项目是不正确的,这根本不是数组的工作方式.
你应该像先说的那样,malloc()为5个项目分配一个单独的房间,然后将每个项目存储到循环内的数组中的正确位置.
我建议使用scanf("%d", &a[i])读取和存储到数组中.还有其他方法来编写第二个参数,但是(在我看来)这对初学者来说是最清晰和最好的.它读作"数组a中i:th项的地址".
| 归档时间: |
|
| 查看次数: |
221 次 |
| 最近记录: |