我正在尝试打印用户输入的数字,它可以是任何数量,所以我使用了指针。我很难将它们打印出来。 这是我的代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,n;
int *elements;
printf("Enter the number of elements to be sorted\n");
scanf("%d", &n);
elements = malloc(sizeof(int)*n);
for (i=0; i<n; i++)
{
scanf("%d", *elements);
}
printf("Elements before sorting\n");
for (i=0; i<n; i++)
{
printf("%d \n", *elements);
}
}
答案 0 :(得分:0)
说printf("%d \n", elements[i]);
。
答案 1 :(得分:0)
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,n;
int *elements;
printf("Enter the number of elements to be sorted\n");
scanf("%d", &n);
elements = (int*)malloc(sizeof(int)*n);
for (i=0; i<n; i++)
{
scanf("%d", elements+i);
}
printf("Elements before sorting\n");
for (i=0; i<n; i++)
{
printf("%d \n", *(elements+i));
}
}
malloc()
返回void*
指针,您应该将其明确地转换为int*
,以便编译器在遍历内存块时知道步长的长度。scanf()
需要一个地址作为补充。这就是您使用&n
代替n
的原因。但是elements
是一个指针,它的值已经是一个地址,所以只需使用elements
即可,但不是*elements
。elements
个循环中的for
,否则所有数字都会存储到同一个地址中并逐个替换。 答案 2 :(得分:0)
<强>第一强>
您必须传递给 scanf 一个要读取的地址。既然你也在迭代,那就改变
scanf("%d", *elements);
到
scanf("%d", &elements[i]);
<强>第二强>
打印时请记住您正在迭代值。所以改变
printf("%d \n", *elements);
到
printf("%d \n", elements[i]);
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,n;
int *elements;
printf("Enter the number of elements to be sorted\n");
scanf("%d", &n);
elements = malloc(sizeof(int)*n);
for (i=0; i<n; i++)
{
scanf("%d", &elements[i]);
}
printf("Elements before sorting\n");
for (i=0; i<n; i++)
{
printf("%d \n", elements[i]);
}
}