This question already has answers here: How to find the 'sizeof' (a pointer pointing to an array)? (13个回答) 4年前关闭。 在数组中有四个元素,因此它的大小应为4bit * 4 =16。(int数据类型在我的系统中需要4位来存储值。)但是当我运行此代码时,由于。#include <stdio.h>#include <stdlib.h>int main(void) { //Dynamic arrays save memory by creating a pointer that stores //the beginning of the array int *dynamicArray = malloc(20 * sizeof(int)); *dynamicArray = 10; printf("Address %x stores value %d\n", dynamicArray, *dynamicArray); dynamicArray[1] = 20; printf("dynamicArray[1] stores value %d\n", dynamicArray[1]); dynamicArray[2] = 45; printf("dynamicArray[2] stores value %d\n", dynamicArray[2]); dynamicArray[3] = 34; printf("dynamicArray[3] stores value %d\n", dynamicArray[3]); printf("The size of dynamicArray is %d\n", sizeof(dynamicArray)); // Release unused memory: free(dynamicArray); return EXIT_SUCCESS;}这是输出的图像。还建议我使用C的网站检查内置函数的属性或进一步了解它们。谢谢。 最佳答案 您没有数组;你有一个指针。指针的大小以字节为单位,而不是以位为单位。sizeof在编译时求值,并且对于任何给定的表达式或类型都是常量。它不依赖于数组中“已填充”元素的数量(就此而言,不依赖于包含这些元素的某些空间的指针)。您的表达式等效于sizeof(int*),并且指针在您的环境中为8个字节。关于c - 动态数组的大小不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33050615/ 10-11 16:43