【发布时间】:2019-11-28 01:11:50
【问题描述】:
我了解到 char 数组不要在 scanf 中使用 & 因为 char 存储点,而不是字符串本身。
char s1[10];
scanf("%s", s1);
但是,为什么动态分配的int数组在scanf中使用&虽然它使用指针?
int *arr = (int *)malloc(sizeof(int)*3);
scanf("%d", &arr[1]);
【问题讨论】:
-
arr[1] 不是指针,所以你应该在它前面加上 &
-
scanf("%s", s1);等价于scanf("%s", &s1[0]);和scanf("%d", &arr[1]);等价于scanf("%d", arr + 1);。 -
int arr[3] = (int *)malloc(sizeof(int)*3)无论如何都不是有效代码。malloc()的结果,无论是否转换,都不能用于初始化数组。