Caleb 发表于 2017-5-27 18:44:21

关于C语言中数组长度的问题

#include<stdio.h>
int main()
{
      int a[]={1,2,3,4,5,6,7,8};
      int *b;
      b=a+7;
      printf("%d\n",*b);
      printf("%d\n",sizeof(b)/sizeof(int));
}

当b指向最后一个元素时,用sizeof()函数求数组长度,我理解的应该是1啊,为什么输出结果是2啊?

人造人 发表于 2017-5-27 19:34:56

#include<stdio.h>
int main()
{
      int a[]={1,2,3,4,5,6,7,8};
      int *b;
      b=a+7;
      printf("%d\n",*b);
      printf("%d\n",sizeof(b)/sizeof(int));
}

8
1
请按任意键继续. . .

Caleb 发表于 2017-5-27 20:09:13

人造人 发表于 2017-5-27 19:34


大神,为啥我的结果是8和2啊,代码完全一样,我是在linux上用的gcc编译器,linux版本是centos 7,运行了好几次,都是8 和 2. 代码也检查了好几遍,完全一样的代码,不知道有没有一样用linux的,可不可以运行一下,看看结果是不是一样?

人造人 发表于 2017-5-27 20:15:11

Caleb 发表于 2017-5-27 20:09
大神,为啥我的结果是8和2啊,代码完全一样,我是在linux上用的gcc编译器,linux版本是centos 7,运行了好 ...

试试这个

#include<stdio.h>

int main(void)
{
        printf("%d\n", sizeof(int *));
        printf("%d\n", sizeof(int));

        return 0;
}

Caleb 发表于 2017-5-27 20:57:09

人造人 发表于 2017-5-27 20:15
试试这个

哦哦,明白了,int * 是8位,int是4位,谢谢版主,版主威武!

人造人 发表于 2017-5-27 21:13:40

Caleb 发表于 2017-5-27 20:57
哦哦,明白了,int * 是8位,int是4位,谢谢版主,版主威武!

^_^
页: [1]
查看完整版本: 关于C语言中数组长度的问题