首页 > 软件操作教程 > 编程开发 > C语言
题目内容

C语言 指针运算符与取地址运算符

题目答案

与指针相关的运算符有两个:

(1)取地址运算符“&”:该运算符的功能是取出一个变量的地址。例如,使用scanf()函数输入变量的值:

    scanf ("%d",&x);

(2)指针运算符:也可以叫做间址运算符或指向运算符。使用形式为: 

    *指针变量

例如:

main()

{

    int a=10;

    int *p;

    p=&a;

    printf("%d",a);

    printf("%d",*p);

    主函数的第一条语句和第二条语句,分别定义了一个普通变量a和一个指针变量p。而第三条语句p=&a,将指针p指向变量a,也就是将a的地址存储在指针p中。一旦指针p与变量a有了指向关系,就可以用来引用变量a的值,所以主函数的最后一句出现的*p就代表了变量a的值。

如果在程序中想对变量a用scanf()函数输入数据,可以使用:

    scanf("%d",&x);

假设变量a与指针p有了指向关系p=&a,scanf()函数也可以写成如下形式:

    scanf("%d",p);

因为P本身就代表了变量a的地址,所以可以将键盘输入的值送入到a的地址中。但注意不要写成如 下形式:

    scanf("%d",&p);

这种写法意味着想输入一个值送到指针p的地址中,而不是指针p所指向的变量的地址中,所以用法是错误的。

如果理解了指针运算符的含义,假设有定义: 

    int a=5, *p;

    *p=&a;

    则表达式a、*p、*&a是等价的。其中表达式“*&a”的含义是,先取变量a的地址,再用指针运算符“*”取出该地址中存放的值,其实质还是“a”。

    而表达式&a、p、&*p是等价的。对于表达式的操作顺序为,先计算*p,*p其实就是a, 之后再取地址。所以本质和&a是一样的。

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

软件操作 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

相关视频试题

最需教育客户端 软件问题一手掌握

去 App Store 免费下载 iOS 客户端