我不明白为什么最后一个代码块生成1819043176 1870078063 6581362 0 1 2 3 4 0 6488159。。。这些数字不是随机的,但为什么这些数字?谢谢您!
int main(void) {
int x;
int y[10];
int* p;
char* q;
int k;
char* prefix;
k = 0;
while (k < 10) {
y[k] = k;
k = k + 1;
}
x = 42;
printf("address of y are %d %d %d\n", y, y + 1, y + 9);
doit(y + 1);
p = &y[0];
printf("p is %d\n", p);
*p = 42;
p = p + 9;
printf("p is %d\n", p);
*p = 17;
q = "hello world";
p = "hello world";
k = 0;
while (k < 10) {
printf("%d ", q[k]);
k = k + 1;
}
printf("The end\n");
k = 0;
while (k < 10) {
printf("%d ", p[k]);
k = k + 1;
}
printf("The end\n");
}
doit公司
void doit(int p[9])
{
char* prefix = "";
int k = 0;
printf("p is %d at address %d\n", p, &p);
while (k < 10)
{
printf("%s%d", prefix, *p);
prefix = ", ";
k = k + 1;
p = p + 1;
}
printf("\n");
}
最佳答案
1819043176是以十六进制表示的6C6C6568,它以字节68、65、6c、6c的形式存储在一个小型的endian机器上。这是“你好世界”的前四个字符。等等。
通常,您不应该在C中执行这些操作,结果是未定义的或依赖于实现的。
如果你仍然想在内存中窥视一下,那么最好以更系统的方式进行,例如编写一个小实用程序来进行十六进制转储。
关于c - C编程指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1541992/