为什么 JavaScript 的数组元素可以是不同类型,而C语言的数组元素只能是一种类型?

题目描述

例如这样的JavaScript数组:

[1, false, {}, ""]

它的底层实现和C语言数组有何不同,为什么可以装入不同类型的数据?

本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
阅读 1.9k
1 个回答

from chatgpt

在C语言中,数组只能包含相同类型的元素。如果要支持不同类型的元素,可以使用结构体或联合体来实现。结构体可以包含不同类型的成员变量,而联合体可以在同一时间只存储其中一个成员变量的值,从而节省内存空间。可以将结构体或联合体作为数组的元素类型,从而实现数组中包含不同类型的元素。

from bing

您好,这是Bing。😊

C语言数组是一种数据结构,它可以存储固定大小的相同类型元素的顺序集合。如果您想在一个数组中支持不同类型的元素,您可以使用指针数组。指针数组是一个数组,它的每个元素都是指向不同类型数据的指针。例如:

#include <stdio.h>
int main(){
    int a = 16;
    char b = 'A';
    float c = 3.14;
    //定义一个指针数组
    void * arr[] = {&a, &b, &c};
    //打印各个元素的值
    printf("%d\n", *(int *)arr[0]);
    printf("%c\n", *(char *)arr[1]);
    printf("%.2f\n", *(float *)arr[2]);
}

输出:

16
A
3.14
请注意,在使用指针数组时,需要进行正确的类型转换。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题