#include <stdio.h>
#include <stdlib.h>
int main() {
int length;
char ch;
// 获取用户输入的长度
printf("请输入数组长度: ");
scanf("%d", &length);
// 获取用户输入的字符
printf("请输入要初始化的字符: ");
scanf(" %c", &ch);
// 动态分配内存
char *str = (char *)malloc(length * sizeof(char));
if (str == NULL) {
printf("内存分配失败\n");
return 1;
}
// 初始化数组
for (int i = 0; i < length; i++) {
str[i] = ch;
}
// 使用数组
for (int i = 0; i < length; i++) {
printf("%c ", str[i]);
}
printf("\n");
// 释放内存
free(str);
return 0;
}
内存相关注意事项:
- 内存分配失败处理:在调用
malloc
分配内存后,需要检查返回值是否为NULL
。如果返回NULL
,表示内存分配失败,程序应做出相应处理,如提示错误并终止程序。
- 内存释放:动态分配的内存使用完毕后,必须调用
free
函数释放,以避免内存泄漏。在上述代码中,当数组使用完毕后,调用free(str)
释放已分配的内存。
- 内存大小计算:在调用
malloc
时,要确保传递的字节数是所需类型大小的正确倍数。这里malloc(length * sizeof(char))
确保分配的内存大小适合存储length
个字符。