首页 > 试题广场 >

以下程序的输出结果是() #include ...

[单选题]
以下程序的输出结果是()
#include <stdio.h>
int main() {
    int* pint = 0;
    pint += 6;
    printf("%d\n", pint);
}
  • 12
  • 72
  • 24
  • 0
这里需要注意的是输出的是指针pint的值而不是其指向的值
发表于 2016-09-07 11:45:24 回复(0)
int* pint = 0; 
pint += 6; 
printf("%d", pint);  = 24

发表于 2016-06-24 10:48:48 回复(0)
F
发表于 2016-07-22 07:54:18 回复(0)
第一句的意思是将pint指针指向0地址处,由于指针类型是int,每次加1相当于移动四个字节,(在int为四个字节的机器上);加上6,地址为0x18
发表于 2016-05-06 10:29:57 回复(14)

两个点:
1.在初始化中只有地址才能赋值给指针,因此*int p=0是指p指向地址0x00。
2.int型数占4个字节,因此加6表示偏移了24个字节,结果的地址应为0x18,即是24.

发表于 2017-05-09 13:16:24 回复(6)
终于get到考点了,我还以为是出错题了,pint是整形指针,移动指针,他的内容可能是任意数,有没有人和我一样看错了的。
发表于 2016-08-31 09:30:55 回复(11)
指向地址零加6,int是4位地址,值为24
发表于 2016-07-10 19:18:37 回复(0)
int *p = 0;//0代表的是地址,不是整型0,换成其他整数就会报错
int *p = 1;//出错
因此,整型的指针地址加6,值为24
发表于 2017-08-19 11:27:09 回复(0)
看错了,以为是输出指针指向的内容..原来是输出指针的地址
发表于 2017-01-16 11:56:11 回复(0)
第一句的意思是将指针指向0处,指针加6,一个整型指针加1代表4个字节,即程序执行完后,指针应该指在24的位置。
发表于 2016-09-08 15:52:12 回复(0)
运行结果应该是16进制的00000018
发表于 2016-08-08 10:47:53 回复(1)
两个点:
1.在初始化中只有地址才能赋值给指针,因此*int p=0是指p指向地址0x00。
2.int型数占4个字节,因此加6表示偏移了24个字节,结果的地址应为0x18,即是24.
发表于 2019-05-08 13:05:26 回复(0)
这道题, 题目意思是:按十六进制地址编号求第六个指针的地址编号的意思,一个指针4个字节,如果是按字节编号,第二个就是4,依次计算,第六个编号应该是18,转成十进制答案就是24。
发表于 2016-07-29 09:27:37 回复(3)
把pint当成一个数组起始地址,最后输出pint[6]的起始地址。
发表于 2022-04-20 10:20:47 回复(0)
4*6+0x0000地址计算
发表于 2019-07-03 21:10:11 回复(0)
const int*是不能赋值给int*的
发表于 2023-09-20 20:23:07 回复(0)
没说32位还是64位机器啊,指针长度可能为8啊
发表于 2023-01-12 18:04:54 回复(0)
两个点:
1.在初始化中只有地址才能赋值给指针,因此*int p=0是指p指向地址0x00。
2.int型数占4个字节,因此加6表示偏移了24个字节,结果的地址应为0x18,即是24.
发表于 2022-08-17 00:03:11 回复(0)
打印的是指针指向的地址,而不是指针指向的地址内部的值
发表于 2022-03-11 08:24:35 回复(0)
int *p = 0; 此时 p = 0x00 p += 6 指针移动6个位置 而p是 int 型,占4个字节,则p地址偏移了6*4,最终指向24,转换十六进制就是 0x18。 cout 会自动识别并输出,但只会输出 0x18。 这答案有问题(溜
发表于 2021-03-11 16:38:06 回复(0)