gpt4 book ai didi

c - 指针运算的奇怪结果

转载 作者:太空狗 更新时间:2023-10-29 16:01:46 24 4
gpt4 key购买 nike

我写了下面的程序来理解指针运算。第二个输出看起来很奇怪,因为指针 'cp' 被声明为 const char **。如果没有任何转换,我希望它在我这样做时递增“1” (cp + 1) 而不是输出显示的 '8'

#include <stdio.h>

typedef const char uint8_t;

const char *c = "hello";
const char **cp = &c;
const char ***cpp = &cp;
const char ****cppp = &cpp;

int main() {

printf(" cp %p (cp + 1) %p \n",(int*)cp, ((int*)cp)+1 );
printf(" cp %p (cp + 1) %p \n", cp, (cp + 1));
printf(" cp %p (cp + 1) %p \n", (uint8_t*)cp, ((uint8_t*)cp) + 1);

return 0;
}


cp 0x601020 (cp + 1) 0x601024
cp 0x601020 (cp + 1) 0x601028
cp 0x601020 (cp + 1) 0x601021

最佳答案

Without any casting I would expect [const char **] to increment by '1' when I do (cp + 1) instead of '8' as the output shows.

否 - 指向指针的指针会增加指针的大小,在您的系统上为 8。

关于c - 指针运算的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22182561/

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