Consider the data type
· char is 1 byte
· int is 2 byte
· long int 4 byte
· float is 4 byet
· double is 8 byte
· long double is 10 byte
· pointer is 2 byte
1. Consider the following program:
main()
{
int a[5] = {1,2,3,4,5};
int *ptr = (int*)(&a+1);
printf(“%d %d” , *(a+1), *(ptr-1) );
}
The output for this program is:
(a) 2 2
(b) 2 1
(c) 2 5
(d) None of the above
选择?
· char is 1 byte
· int is 2 byte
· long int 4 byte
· float is 4 byet
· double is 8 byte
· long double is 10 byte
· pointer is 2 byte
1. Consider the following program:
main()
{
int a[5] = {1,2,3,4,5};
int *ptr = (int*)(&a+1);
printf(“%d %d” , *(a+1), *(ptr-1) );
}
The output for this program is:
(a) 2 2
(b) 2 1
(c) 2 5
(d) None of the above
选择?
>> 本文固定链接: http://www.vcgood.com/archives/648
c
int *ptr = (int*)(&a+1);
指针ptr并不是指向数组中的第二个元素。a+1是指向数组中的第二个元素,但是&a+1就不是了。a是数组第0个元素的地址,而&a是指针的地址。&a不仅记录着数组的首地址,而且还记录了数组的长度,&a+1就是跳过这个数组,也就是指向了数组过后的第一个字节。所以,ptr-1就退到数组的最后一个元素,*(ptr-1)输出的结果就是数组的最后一个元素5。
好,又学到了新东西,谢谢啦!
应该差不多吧
来支持一下啊
ningweidong
正解.
c
谢谢了,学到东西了
好像c,不很确定
学C那会,老师说指针太难,咱不学了,回头考试出简单点的。结果学C++的时候,老师来了句,学C的时候你们学过指针了吧,那我这里就不讲了啊。