【C语言基础】sizeof(数组名)
C语言数组名容易在以下两种情况混淆。
情况1:数组名代表数组整体("arr[] =" 格式的数组)
当用方括号定义数组时, 数组名代表数组整体。
int a[] = {1,2,3,4};
char b_str[] = "hello";
char c_str[] = {'h','e','l','l','o'};
printf("%d\n",sizeof(a));//数组名表示整个数组的大小,元素类型 int ,有4个元素,所以大小为 4×4 = 16
printf("%d\n",sizeof(b_str));//数组名表示整个数组的大小,元素类型char ,有6个元素(包含'\0'),所以大小为 6
printf("%d\n",sizeof(c_str)); //数组名表示整个数组的大小,元素类型char ,有5个元素,所以大小为 5
另外,注意区分以下情况:
char *d_str = "hello";//看清楚p这是一个字符指针,指向字符串“hello”、
printf("%d\n",sizeof(d_str)); //d_str是一个指针,所以大小为4
//这种情况如果想得到字符个数,建议采用 <string.h> 的strlen() 函数。
情况2:数组名——代表一个指针
当数组名作为函数参数时,在函数体内,自动退化为一个指针。
此时,sizeof(数组名) = 指针大小(32位系统=4)
综合例题:sizeof(指针数组的数组名)
1 char *words[] = {"hello", "world", "hi", "space"};
2 cout << sizeof(words); <<endl;
words 是一个指针数组,求 sizeof(words):
这是上述的情况1, 这个数组名代表数组整体。数组的每一个元素的类型是 char * 指针,每个指针大小为4, 总共由4个指针,
则最终结果为 4*4 = 16.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具