何为指针(四)指针,解引用和左值

本文探讨了指针作为左值的使用方式,并解释了指针解引用如何影响内存位置。文章通过具体例子展示了合法和非法指针操作的区别,并强调了编译器错误信息的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pointers or C 英文版翻译

原文:6.7 Pointers,Indirection,and L-values

6.7 指针,解引用和左值

包含指针的表达式可以用来做左值吗?如果可以的话,是那个?我们回到先前的例子。给出下面的声明:

int  a;
int* d=&a;

考虑下面的表达式:

表达式左值表达的位置
ayesa
dyesd
*dyesa

指针变量可能被用作左值,不是因为他们是指针,而是因为他们是变量,应用解引用指针变量,说明我们应该要跟踪指针。解引用识别内存的一个特殊位置,所以我们可以使用解引用表达式的结果作为左值。
下面几条语句:

*d=10-*d;
 d=10-*d;   // <--???

第一条语句包含两个解引用。表达式右边作为右值被使用,所以他读取d指向内存的值(a的值)。解引用在左边被当做一个左值,所以d指向的位置接受一个通过右边计算得到的新值。


第二条语句是非法的,因为他指示一个整数储存到一个指针变量中。当我们使用的变量在上下文中与他的类型不一致时,编译器会通过提示帮助我们。这些错误和警告信息是你的朋友。编译器通过生成他们帮助你。尽管我们都不愿意处理这些信息,但是这是改正错误的一个好方法,尤其是那些不会终止编译的警告信息。编译器明确的告诉你错误的位置比你调试程序之后在结局问题容易的多。调试器不会和编译器一样定位问题。


老式的编译器当指针和整型变量被混合时没有任何抱怨。然而,我们知道现在好多了。把指针转换为整数,或者反过来,正真有用的情况很少。通常这些转换是无意中的错误。


译者:小风Code
时间:2017-11-6

您好,对于使用PCIE 转 USB 3.0 控制器 chip upd720201Linux 系统下的驱动,下面是一个简要的回答: upd720201 是一种常见的 PCIE 转 USB 3.0 控制器芯片,一般用于将 PCIE 接口转换为 USB 3.0 接口的转换器或扩展卡上。在使用 Linux 系统时,对于 upd720201驱动,一般来说,Linux 内核已集成了常见的控制器芯片的驱动程序,因此通常无需手动安装额外的驱动。 通常在多数 Linux 发行版中,内核已经支持 upd720201 控制器芯片,并自动加载正确的驱动。因此,当您将 PCIE 转 USB 3.0 转换器或扩展卡插入服务器或台式机的 PCIE 插槽时,Linux 内核会自动识别并加载驱动。运行 lsusb 命令可以查看与该控制器相关的 USB 设备是否正确识别。 但请注意,在某些情况下,可能会出现兼容性问题,导致标准内核驱动无法正常工作。如果您遇到这种情况,您可以尝试以下解决方法: 1. 更新 Linux 内核:某些发行版的内核版本可能较旧,不支持最新的硬件设备。通过更新最新版本的内核,可以增加对 upd720201 的支持,并解决兼容性问题。 2. 安装额外的驱动程序:如果更新内核后问题仍然存在,您可以尝试手动安装 upd720201 的特定驱动程序。您可以在 upd720201 控制器芯片制造商的网站上查找针对 Linux驱动程序,并根据提供的安装指南进行操作。 总结一下,大多数情况下,在 Linux 系统中使用 PCIE 转 USB 3.0 控制器芯片 upd720201 时,不需要手动安装额外驱动程序。但在某些情况下,可能需要更新内核或安装特定的驱动程序来解决兼容性问题。希望能对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值