关于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啊? #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
请按任意键继续. . . 人造人 发表于 2017-5-27 19:34
大神,为啥我的结果是8和2啊,代码完全一样,我是在linux上用的gcc编译器,linux版本是centos 7,运行了好几次,都是8 和 2. 代码也检查了好几遍,完全一样的代码,不知道有没有一样用linux的,可不可以运行一下,看看结果是不是一样? 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;
}
人造人 发表于 2017-5-27 20:15
试试这个
哦哦,明白了,int * 是8位,int是4位,谢谢版主,版主威武! Caleb 发表于 2017-5-27 20:57
哦哦,明白了,int * 是8位,int是4位,谢谢版主,版主威武!
^_^
页:
[1]