找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1192|回复: 10
打印 上一主题 下一主题
收起左侧

C语言指针变量的理解问题

[复制链接]
跳转到指定楼层
楼主
ID:521921 发表于 2019-6-19 11:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教师兄们,如下指针的表达是否准确?谢谢!
案例1:
int a = 30
int *pi = & a

*// 这里的意思是不是把a的地址编号赋给了*pi,也就是*pi的输出值不是30 ,而是a的地址编号,对吗?

案例2:
int a = 30
int *pi =  a

*// 可以这样表达吗?如果可以,那么*pi = 30,对吗?



案例3:
int *pi 、a = 30;
pi = &a;
printf("%d" , *pi)

*//这里*pi = 30;对吗?

案例4:
int *pi 、a[10];
pi = a;
printf("%d" , *pi)


*//这个*pi的值是不是就是a数组的每个值?


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:94031 发表于 2019-6-19 14:58 | 只看该作者
仿真试试就知道了
回复

使用道具 举报

板凳
ID:564631 发表于 2019-6-19 17:46 | 只看该作者
你理解错了,我举案,例1: int a = 30 int *pi = & a  *// 这里的意思是把a的地址编号赋给了pi,也就是*pi的输出值是30
回复

使用道具 举报

地板
ID:567103 发表于 2019-6-19 18:24 来自手机 | 只看该作者
案例三是对的
回复

使用道具 举报

5#
ID:567103 发表于 2019-6-19 18:24 来自手机 | 只看该作者
案例四是a1的值吧
回复

使用道具 举报

6#
ID:567109 发表于 2019-6-19 18:34 | 只看该作者
怎么说呢,这里案例1、2都是合法的,但是表达的意思不同,案例1你的指针是指向a的,他所保存的是a的地址,案例2则是将指针指向常量(就是这个数原本就存在的地址);
回复

使用道具 举报

7#
ID:558085 发表于 2019-6-19 19:59 | 只看该作者
见意绕行,上专业的C语言网站,那里回答更专业更精僻更深入
回复

使用道具 举报

8#
ID:521921 发表于 2019-6-20 10:18 | 只看该作者
谢谢各位,我似乎明白了一些,总觉得这个*p的表达方式有点灵活,搞得晕晕的。。。
回复

使用道具 举报

9#
ID:568044 发表于 2019-6-20 17:05 | 只看该作者
案例1:把30的在内存中的地址编号赋给指针p
案例2和3对
案例4:*p=a[0]
回复

使用道具 举报

10#
ID:388197 发表于 2019-6-21 16:30 | 只看该作者
案例一  理解正确
案例二  理解没问题,但应该有些编译器会报错,因为a 与 PI不是同一类型的,直接把a赋值给PI会报错.
案例三  理解正确,  *PI 就是取 PI里面的值.
案例四 理解错误,指针指向一个数组,如果不对其进行操作,那么指针就指向这个数组的第1个元素.PRINTF执行后,显示的是a[0]的值.
回复

使用道具 举报

11#
ID:569500 发表于 2019-6-22 15:06 | 只看该作者
多看带指针的代码
多自己动手敲
哪怕记住了还是容易忘
自己摸索出来的记忆会非常深刻
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表