指针算术的奇怪结果
发布时间:2020-12-16 09:50:54 所属栏目:百科 来源:网络整理
导读:我编写了以下程序来理解指针算法.第二个输出看起来很奇怪,因为指针’cp’被声明为一个const char **.没有任何转换我会期望它增加’1’当我做(cp 1)而不是’8′,如输出所示. #include stdio.htypedef const char uint8_t;const char *c = "hello";const char
我编写了以下程序来理解指针算法.第二个输出看起来很奇怪,因为指针’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 解决方法
否 – 指向指针的指针将增加指针的大小,指针在系统上为8. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |