MST

星途 面试题库

面试题:C语言一维数组初始化高级难度题

假设你有一个字符数组,要存储一段字符串,但是你希望通过动态初始化的方式,根据用户输入的长度来分配并初始化数组,且初始化的字符全部为用户输入的某个字符,用C语言代码实现该功能,并说明在实现过程中需要注意哪些内存相关的问题。
39.1万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#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;
}

内存相关注意事项:

  1. 内存分配失败处理:在调用malloc分配内存后,需要检查返回值是否为NULL。如果返回NULL,表示内存分配失败,程序应做出相应处理,如提示错误并终止程序。
  2. 内存释放:动态分配的内存使用完毕后,必须调用free函数释放,以避免内存泄漏。在上述代码中,当数组使用完毕后,调用free(str)释放已分配的内存。
  3. 内存大小计算:在调用malloc时,要确保传递的字节数是所需类型大小的正确倍数。这里malloc(length * sizeof(char))确保分配的内存大小适合存储length个字符。