【发布时间】:2019-06-03 10:23:23
【问题描述】:
我明确表示我的问题与this 问题完全相同。
但不幸的是,我有一个问题,任何答案都没有解决。 所以代码是:-
#include <string.h>
int foo(void) {
char bar[128];
char *baz = &bar[0];
baz[127] = 0;
return strlen(baz);
}
问题是:这个函数的可能输出是什么?
当我运行这段代码时,每次都会给出 0,正确答案是 0 和 127(我还是不明白为什么?)。
我的问题是这个语句是如何有效我的意思是我们正在计算 baz 的长度,其中包含一个内存地址,比如 0xb96eb740 这是一个十六进制数字,所以我们在做什么是strlen() 在这个地址上找到它的 长度吗?我的意思是我们如何才能找到一个地址的长度,这只是一个数字?
我真的很困惑,并试图理解它几个小时,但仍然无法理解。
【问题讨论】: