gpt4 book ai didi

c - 输出与 MCQ 中给出的选择不匹配

转载 作者:行者123 更新时间:2023-11-30 16:43:43 25 4
gpt4 key购买 nike

这是我在书中找到的一个简单的C程序。

static char wer[3][4] = {"bag", "let", "bud"};
char(*ptr) [4] = wer;

printf("%d %d", ptr, ptr+1); 的可能输出是

(a) 262 262
(b) 262 266
(c) 262 263
(d) 262 265

当我执行相同的程序时,它给了我 170 174 输出谁能解释一下 *ptr 的初始化以及为什么答案不是 MCQ 中给出的答案之一。

附上Questions的照片和一个Explanation

最佳答案

首先,您应该使用%p来打印地址。阅读迈克尔·沃尔兹的评论。否则,您将调用 UB .

接下来,char(*ptr) [4] = wer;这将ptr定义为指向四个char数组的指针s。您必须知道,向指针添加 1 会使指针跳转该指针所属类型的字节数。例如,在int *p中,当您执行p++时,您将跳转sizeof int字节数。

类似地,在您的情况下,您将跳转 4 个字节,因为 ptr 的类型是指向 4 个字符数组的指针(一口气读完;))。答案应该是b。

why the answer is not one of the answers given in MCQ

那是因为,您正在打印(或尝试)对象的地址。每次程序运行时,都不能保证对象将被放置在同一位置。

顺便说一句,我建议你再买一本书。快。

关于c - 输出与 MCQ 中给出的选择不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45007737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com