阅读以下说明、C程序代码和问题1至问题3,将解答写在答题纸的对应栏内。
设在某C系统中为每个字符型数据分配1个字节,为每个整型(int)数据分配4个字节,为每个指针分配4个字节,sizeof(x)用于计算为x分配的字节数。【C代码】
请写出以上C代码的运行结果。
参考答案:
解析:
sizeof是C语言提供的一个关键字,sizeof(x)用于计算为x分配的字节数,其结果与系统或编译器相关。若x是数组名时,用于计算整个数组所占 用存储空间的字节数;若x是指针,则无论其指向的目标数据是什么类型,x所占用的存储空间大小都相同(在同一系统或编译环境中);若x是结构体变量或类 型,则需要根据系统规定的对齐要求来计算为x所分配空间的字节数。根据说明,系统为每个字符型数据分配1个字节.为每个整型(int)数据分配4个字 节,为每个指针分配4个字节,那么sizeof(int)、sizeof(unsigned int)是计算整型数据和无符号整型数据的存储空间大小,sizeof(arr)是计算数组arr的字节数,它们的值分别为4、4和20。 sizeof(char)计算一个字符数据所占用的字节数,根据说明应为1。sizeof(mystr)计算为字符数组mystr分配的空间大小,该数组 的大小由字符串"JustAtest\n"决定,该字符串的长度为10,还有一个串尾结束标志字符'\0',因此sizeof(mystr)的值为1 1。ptr是指向字符数组mystr的指针,显然sizeof(ptr)的结果为4。由于*ptr指向了一个字符数据,因此sizeof (*ptr)的结果为1,函数strlen(ptr)计算ptr所指字符串的长度,结果为10。