考虑
#include <cstdio>
int main() {
char a[10];
char *begin = &a[0];
char *end = &a[9];
int i = end - begin;
printf("%i\n", i);
getchar();
}
#include <cstdio>
int main() {
int a[10];
int *begin = &a[0];
int *end = &a[9];
int i = end - begin;
printf("%i\n", i);
getchar();
}
#include <cstdio>
int main() {
double a[10];
double *begin = &a[0];
double *end = &a[9];
int i = end - begin;
printf("%i\n", i);
getchar();
}
以上三个例子都打印了9
我可以知道,我应该如何解释9的含义。它是什么意思?
最佳答案
9 表示 &a[9] 和 &a[0] 之间类型为 'T' 的元素的数量(其中 T 依次为 char、int、double)。
它们之间的实际字节数是(&a[9] - &a[0])*sizeof(T)
。请注意,根据定义,sizeof(char) 为 1。进一步注意一个字节不是必须是 8 位的。 相反,它是一些 8 位内存位置,用于保存实现的基本字符集中的所有字符。
编辑:正如@pmg 所指出的,一个字节被定义为一个内存位置,其宽度足以容纳实现的基本字符集中的所有字符。
关于c++ - "difference of memory address?"是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3767757/