鱼C论坛

 找回密码
 立即注册
查看: 2185|回复: 3

[已解决]sizeof指针数组长度问题

[复制链接]
发表于 2019-2-22 23:28:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <stdio.h>

  2. int main(void){
  3.        
  4.         char *p[5] = {"aaa","bbb","ccc","ddd","eee"};
  5.         int i;
  6.        
  7.         for(i = 0; i < 5; i++){
  8.                 printf("%d\n",  sizeof(p[i]) );
  9.         }
  10.         return 0;
  11. }
复制代码


打印出来都是8, 不太清楚8是那里来的,应该是 3或4才对,

萌新求助

最佳答案
2019-2-22 23:59:53
p[i]的类型是char*,
char*是一个指针!
char*是一个指针!
char*是一个指针!
既然是指针,那么在32位下长度就为4,64位下长度就为8
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-2-22 23:59:53 | 显示全部楼层    本楼为最佳答案   
p[i]的类型是char*,
char*是一个指针!
char*是一个指针!
char*是一个指针!
既然是指针,那么在32位下长度就为4,64位下长度就为8

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
行客 + 1 + 1 + 1 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-23 16:21:59 | 显示全部楼层
指针数组存的都是地址啊,长度操作系统决定的
如果是想判断里面的字符串的长度的话,还是用strlen()好了
加油咯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-24 12:52:51 | 显示全部楼层
sizeof是运算符:获得保证能容纳实现所建立的最大对象的字节大小。具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:数组——编译时分配的数组空间大小;指针——存储该指针所用的空间大小(存储该指针的地址的长度)。
strlen是函数:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 08:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表