【发布时间】:2019-08-06 09:12:04
【问题描述】:
char a[]="hello";
char *p=a;
printf("%d",sizeof(p));
预期的输出是 4 或 8,但我们得到的输出是 2。
使用 TurboC3
【问题讨论】:
-
我在我的 MacBook Pro 上试过了,我得到了
8预期的结果。你是在笔记本电脑还是 MCU 上运行它的?我想如果 CPU 是 16 位的,那么你就有可能得到2。 -
微弱相关(通过 cmets):stackoverflow.com/questions/55180062/… TurboC 已经过时并且以自己的方式做事。试试别的。此外,您可能应该要求 %lu 作为格式说明符,而不是 %d。
-
检查编译器是否有名为“内存模型”的设置以及是否存在 - 将其设置为大以查看
4的结果。或者干脆将定义更改为char far *p=a; -
size_t值的格式为"%zu"。 Turbo C 可能不支持,所以转换为某个格式存在的时间,例如printf("%lu\n", (unsigned long)sizeof p);
标签: c