标题:地址值能赋值给变量吗?
只看楼主
开到荼蘼
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-5-29
结帖率:87.5%
已结贴  问题点数:10 回复次数:6 
地址值能赋值给变量吗?
ypedef struct _PLX_PARAMS
{
    RETURN_CODE    ReturnCode;                  // API status code API状态代码
    PLX_DEVICE_KEY Key;                         // Device key information 设备关键信息
    U64            value[3];                    // Generic storage for parameters 参数的通用存储器
    union
    {
        PLX_INTERRUPT    PlxIntr;//结构体变量,PLX中断结构
        PLX_PHYSICAL_MEM PciMemory;//结构体变量,PLX物理存储器
        PLX_PORT_PROP    PortProp;//结构体变量,获取端口性质和状态
        PLX_PCI_BAR_PROP BarProp;//结构体变量,BAR(缓冲地址寄存器)属性
        PLX_DMA_PROP     DmaProp;//结构体变量,DMA通道特性结构
        PLX_DMA_PARAMS   TxParams;//结构体变量,DMA传输参数
        PLX_DRIVER_PROP  DriverProp;//结构体变量,PLX驱动器属性
    } u;
} PLX_PARAMS;
typedef struct _PLX_DMA_PARAMS
{
    union
    {
        U64 UserVa;                                // User space virtual address 使用者空间虚拟地址
        U32 PciAddrLow;                            // Lower 32-bits of PCI address PCI地址的低32位
    } u;
    U32     PciAddrHigh;                           // Upper 32-bits of PCI address PCI地址的高32位
    U32     LocalAddr;                             // Local bus address 局部总线地址
    U32     ByteCount;                             // Number of bytes to transfer 转移的字节数
    U32     TerminalCountIntr :1;
    U32     LocalToPciDma     :1;
} PLX_DMA_PARAMS;

PLX_PARAMS IoBuffer;
UNSIGNED32 value;
typedef UINT_PTR              PLX_UINT_PTR;  
IoBuffer.u.TxParams.u.UserVa  = (PLX_UINT_PTR)&value;请问这个赋值语句正确吗?地址值能赋给变量吗?还是这里面有什么玄机?请各位大神指点
搜索更多相关主题的帖子: 结构 设备 storage status 存储器 
2012-08-01 11:21
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:3 
地址值能赋给变量吗?

能 而且指针变量的赋值就是这么写的

int *p = &a;

事实上 即使不是指针变量 也能这么写

int p = &a;

但这不大好罢了

根据命名规则猜测 你这里是给一个指针赋值
2012-08-01 11:24
开到荼蘼
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-5-29
得分:0 
回复 2楼 zklhp
每个变量的原始定义我都查了,最后的UserVa是个64位的无符号整型,所以给变量赋了一个地址值,就让我这个新手有些费解了,那把地址赋给变量,这个用法也类似于指针吗?
2012-08-01 11:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:3 
指针只是一个储存地址值的变量。
1楼的代码不知所谓,union当struct用?

授人以渔,不授人以鱼。
2012-08-01 11:37
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
int char int64 这都是变量 int * 等等 也是变量 大家都是变量 凭什么你能这样我不能这样?

呵呵 你有疑问 一个是对指针理解不深 一个就是某位大牛说的 受【指针神话】影响太深了 从语言的角度讲 指针也是个变量 只不过它的功能和一些行为和普通变量不大一样罢了
2012-08-01 11:47
q215236213
Rank: 4
等 级:业余侠客
威 望:1
帖 子:148
专家分:276
注 册:2012-7-24
得分:3 
能不能给讲讲指针呢?你是如何理解指针的?
都说指针 是 c语言的精髓!但指针这一块个人理解感觉很绕,很糊~~~

[ 本帖最后由 q215236213 于 2012-8-1 12:55 编辑 ]
2012-08-01 12:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
指针,相当于数学坐标系中的坐标,是用来寻址定位的。你想想坐标在数学方程和求解中的作用,就知道指针的作用。就是这么理解。但若说指针能够取代数据实体,就犹如说只要坐标不要空间中的对象了。首先是掌握实体(数据和代码段)在空间中的分布状况,然后才是构建指针用于寻访并处理,没有了前者,那叫空指针和野指针。指针是间接手段,当然有点绕,比如在同样的坐标处,放置不同的东西,坐标即指针是一样的,但并非同一个东西,所以不能只看指针的指向,同时还需要看它指的是什么,那才是最终目标。总之,手段很重要,但不等于说应该把手段视为目标。别的高级语言,是力图让程序员把注意力集中在目标身上,把如何寻访目标的过程和手段隐藏起来,而C则把内部细节公开了,如此而已,其实大家都是一样的做法。

授人以渔,不授人以鱼。
2012-08-01 13:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-374502-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.307580 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved