**
任务描述
本关任务:分别给出指针和数组在内存中所占空间的大小(以字节为单位)。(educoder平台)
相关知识
为了完成本关任务,你需要掌握:
1.指针变量的大小指的是一个指针在内存所占空间的大小,与指针类型无关,与机器的直接寻址大小有关,即32位的机器,指针占4个字节,64位的机器,指针占8个字节。
2.数组的大小指的是其所有元素在内存所占空间的大小,与数组类型和数组大小有关。如100个元素的字符数组,其所占内存大小是100字节,而100个元素的整型数组,其所占内存大小是400字节。
了解数据类型在内存中占据的空间大小
sizeof对指针变量的计算得到的是指针所占据的内存空间大小,32位系统分配的是4个字节,64位系统分配的是8字节,指针变量可以多次赋不同的值。
sizeof对数组变量的计算是系统给全部元素分配的内存空间,在编译后即固定,因此数组变量不可重赋值。
编程要求
根据提示,在右侧编辑器补充代码,输出指针和数组所占内存空间的大小。本项目作为掌握EduCoder在线项目评测和上机环境的使用,因此程序代码非常简单短小。
测试说明
平台会对你编写的代码进行测试:
测试输入:无输入数据
预期输出:
指向100个字符的字符指针sizeof(p_char) = 8 , 100个字符数组sizeof(array_char) = 100
指向100个整数的整型指针sizeof(p_int) = 8 , 100个整型数组sizeof(array_int) = 400
//stu001.c 程序模板,缺失代码由学生完成,本任务为educoder入门项目。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *p_char =malloc(100);
char array_char[100];
int *p_int =malloc(100);
int array_int[100];
//请在begin和end语句行之间补全程序语句:
/* begin ************************************************************** */
//输出p_char 和 array_char在内存中所占空间的大小
//输出p_int 和 array_int在内存中所占空间的大小
printf("指向100个字符的字符指针sizeof(p_char) = %d , 100个字符数组sizeof(array_char) = %d\n",sizeof(p_char),sizeof(array_char));
printf("指向100个整数的整型指针sizeof(p_int) = %d , 100个整型数组sizeof(array_int) = %d\n",sizeof(p_int),sizeof(array_int));
/* end ************************************************************** */
free(p_char);
free(p_int);
return 0;
}