arrays - C中数组的动态内存分配
问题描述
我一直在尝试编写一个简单的代码,其中数组是动态分配的。每次我将数组的一侧指定为 n(假设为 4)并继续输入给定的输入时,它都会从我这里获取 n+1(在这种情况下为 5)个输入,但作为输出,它会打印 n(4)个元素.
这是我写的主要功能:
int main() {
int *arr, n;
scanf("%d", &n); //n is the size
arr = (int *)malloc(n*sizeof(int));
for(int i=0; i<n; i++) {
scanf("%d ", &arr[i]);
}
for(int i=0 ; i<n; i++) {
printf("%d ", arr[i]);
}
}
我还尝试通过在第一个循环中将 i 初始化为 1 来编写代码,这样它只需要 n 个输入,但它会给出一个奇怪的输出,如下所示:
7953616 1 2 3
解决方案
在这两行
scanf("%d ", &arr[i]);
printf("%d ", arr[i]);
你有%d
而不是%d
您还需要free()
从stdlib
库中使用,因为在完成使用指针后,您需要释放内存以便再次重用它,否则会发生这种情况
最终代码
#include <stdio.h>
#include <stdlib.h>
int main() {
int *arr, n;
scanf("%d", &n); //n is the size
arr = (int *)malloc(n*sizeof(int));
for(int i=0; i<n; i++)
scanf("%d", &arr[i]);
for(int i=0 ; i<n; i++)
printf("%d", arr[i]);
free(arr);
}
推荐阅读
- react-native - React Native - 即使在安装和链接包之后,未定义也不是对象(评估'RNGestureHandlerModule.state')
- python-3.x - PYQT5 :slot 函数在没有 lambda 的情况下不起作用
- azure - Azure 门户中缺少 Azure DevOps 项目
- linux - Pam.exec 退出代码 8
- javascript - 尝试添加数百万个元素时 React 冻结
- lapply - vapply 和 FUN.VALUE 用于非原始数据类型
- python - 自我被视为一个变量
- python - 将 XML 写入文件时缺少某些元素的结束标记
- html - shopify页面构建器(pagefly)在移动宽度问题上存在问题
- sql - 在一行中使用 SUM 和 UNION ALL