C 使用下面代码中的指针打印2个变量的数据

C 使用下面代码中的指针打印2个变量的数据,c,pointers,C,Pointers,我有以下代码: #include <stdio.h> #include <stdlib.h> int *p; int main() { int a = 4, b = 8; p = &b; //TODO: fill in the blank printf("a = %ld\n", /*Fill in here */); printf("b = %ld\n", /*Fill in here */); retur

我有以下代码:

#include <stdio.h>
#include <stdlib.h>

int *p;

int main() {
    int a = 4, b = 8;

    p = &b;

    //TODO: fill in the blank
    printf("a = %ld\n", /*Fill in here */);
    printf("b = %ld\n", /*Fill in here */);

    return 0;
}
#包括
#包括
int*p;
int main(){
INTA=4,b=8;
p=&b;
//todo:填写空白处
printf(“a=%ld\n”,/*在此处填写*/);
printf(“b=%ld\n”,请在此处填写*/);
返回0;
}

如何仅使用
p
访问两个变量
a
b
的值来打印它们?

通常,您无法使用当前的代码/方法执行此操作

在C标准中,没有任何东西可以保证两个或多个自变量的内存分配策略,因此不可能跟踪上一个或下一个内存位置。没有确定的方法来推断
a
的值,只能访问
p


如果需要从单个指针访问多个变量(相同类型)的值,请考虑创建一个数组,其中元素被保证驻留在相邻的内存位置,因此指针运算是有意义的,并且我们可以确定性地到达前面的下一个元素。从读一本C语言书开始。旁白:

%ld
所指的
长的
在哪里好的,抱歉,我太快下结论了,现在这似乎不是写我的代码请求,而是需要阅读的基本c-book问题。那么我写的是什么/*填写这里*/?嗨,我得到了答案。只需将
*(p+1)
用于
a
*p
用于
b
。您可以使用谷歌搜索或阅读一些关于内存段=)的书籍来获取更多信息。对不起,我的英语不好。@HuyLê我有责任通知您,该信息的来源应该立即停止,这在一般方面是不正确的。好的。这是我的错。我正在学习数据段。这个问题只是让我了解了分配存储区域来分配数据段的机制。正如你所说,这在总体上是不正确的。谢谢你的帮助。@HuyLê乐意效劳。正如我提到的,您可以使用数组来实现所需的功能。