#include <stdio.h>
using namespace std;
int main(void){
printf("len_char=%d\nlen_int=%d\nlen_signed_int=%d\nlen_unsigned_int=%d\nlen_short=%d\nlen_long=%d\nlen_float=%d\nlen_double=%d\n",
sizeof(char), // 1
sizeof(int), // 4
sizeof(signed int), // 4
sizeof(unsigned int), // 4
sizeof(short), // 2
sizeof(long), // 4 (32位机) or 8 (64位机)
sizeof(float), // 4
sizeof(double) // 8
);
int arr[] = { 1,2,3 };
char str[] = "123";
char *str2 = "123";
int *p= arr;
char *i=str;
/*
sizeof(arr), // 12 3*int
sizeof(str), // 4 3*char+1('\0')
sizeof(str2), // 4 非数组指针 占一个int (32位机) or 8 (64位机)
sizeof(*arr), // 4 int
sizeof(*str), // 1 char
sizeof(p), // 4 非数组指针 占一个int (32位机) or 8 (64位机)
sizeof(i), // 4 非数组指针 占一个int (32位机) or 8 (64位机)
sizeof(*p), // 4 int
sizeof(*i) // 1 char
*/
printf("%d,%d,%d,%d,%d,%d,%d,%d,%d\n",sizeof(arr), sizeof(str), sizeof(str2),sizeof(*arr), sizeof(*str), sizeof(p), sizeof(i), sizeof(*p), sizeof(*i));
return 0;
}
char *str2 = "123";和char arr[] = {'1','2','3' };以及char arr[] = "123";是不一样的!char *str2 = "123";和char arr[] = "123";结尾都有一个'\0'!
本文深入探讨了C语言中不同数据类型所占用的内存大小,包括基本类型如char、int、float等,以及复合类型如数组和指针。通过实际代码示例,解释了数组和指针在内存中的表现形式及其大小的区别,对于理解C语言的底层机制有重要帮助。
1279

被折叠的 条评论
为什么被折叠?



