Daniel_Zhang 发表于 2021-2-4 19:58:50

c 语言指针问题

代码如下

#include <stdio.h>

int main(){
    int a;
    int *p = &a;

    printf("请输入数字!\n");
    scanf("%d", &a);
    printf("a = %d\n", a);

    printf("请输入新的数字!\n");
    scanf("%d", p);
    printf("a = %d\n", a);
    return 0;
}

问题1:第 5 行是什么意思?&a 是 a 的地址吗?*p是什么?

问题2:第 8 行 scanf 是如何获取 a 的值的?是直接将输入的值传递给 a 的地址吗

问题3:第 13 行 这里 p 是不是代表 &a 的意思?

问题4:p 和 *p 有什么区别?

P.s 结贴速度快,有用必最佳{:10_297:}


liuzhengyuan 发表于 2021-2-4 20:01:16

本帖最后由 liuzhengyuan 于 2021-2-4 20:03 编辑

1,指针变量在定义的时候必须加 *,&a 是 a 的地址。&是“取址操作符”。
2,a 是正常变量,所以 scanf 照常使用
3,是的
4,*p 值指针变量所指的变量的值,p 是地址

昨非 发表于 2021-2-4 20:13:53

一、定义整型指针p,指向a的地址,&a 表示对a取地址,int*p是定义指针是的语法。
二、参考楼上
三、p代表指针本身得值,是一个地址(a的地址)
四、*p 是指针所指的对象的值,p 指针本身的值,a的地址

Daniel_Zhang 发表于 2021-2-4 20:16:33

昨非 发表于 2021-2-4 20:13
一、定义整型指针p,指向a的地址,&a 表示对a取地址,int*p是定义指针是的语法。
二、参考楼上
三、p代表 ...

谢谢大佬!{:10_297:}
页: [1]
查看完整版本: c 语言指针问题