地址值能赋值给html变量赋值吗

欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 5048 人关注过本帖
标题:地址值能赋值给变量吗?
等 级:新手上路
帖 子:18
结帖率:87.5%
&&已结贴√
&&问题点数:10&&回复次数:6&&&
地址值能赋值给变量吗?
ypedef struct _PLX_PARAMS
&&& RETURN_CODE&&& ReturnC&&&&&&&&&&&&&&&&&&// API status code API状态代码
&&& PLX_DEVICE_KEY K&&&&&&&&&&&&&&&&&&&&&&&& // Device key information 设备关键信息
&&& U64&&&&&&&&&&&&value[3];&&&&&&&&&&&&&&&&&&&&// Generic storage for parameters 参数的通用存储器
&&&&&&&&PLX_INTERRUPT&&& PlxI//结构体变量,PLX中断结构
&&&&&&&&PLX_PHYSICAL_MEM PciM//结构体变量,PLX物理存储器
&&&&&&&&PLX_PORT_PROP&&& PortP//结构体变量,获取端口性质和状态
&&&&&&&&PLX_PCI_BAR_PROP BarP//结构体变量,BAR(缓冲地址寄存器)属性
&&&&&&&&PLX_DMA_PROP&&&&&DmaP//结构体变量,DMA通道特性结构
&&&&&&&&PLX_DMA_PARAMS&&&TxP//结构体变量,DMA传输参数
&&&&&&&&PLX_DRIVER_PROP&&DriverP//结构体变量,PLX驱动器属性
} PLX_PARAMS;
typedef struct _PLX_DMA_PARAMS
&&&&&&&&U64 UserVa;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&// User space virtual address 使用者空间虚拟地址
&&&&&&&&U32 PciAddrL&&&&&&&&&&&&&&&&&&&&&&&&&&& // Lower 32-bits of PCI address PCI地址的低32位
&&& U32&&&&&PciAddrH&&&&&&&&&&&&&&&&&&&&&&&&&&&// Upper 32-bits of PCI address PCI地址的高32位
&&& U32&&&&&LocalA&&&&&&&&&&&&&&&&&&&&&&&&&&&&&// Local bus address 局部总线地址
&&& U32&&&&&ByteC&&&&&&&&&&&&&&&&&&&&&&&&&&&&&// Number of bytes to transfer 转移的字节数
&&& U32&&&&&TerminalCountIntr :1;
&&& U32&&&&&LocalToPciDma&&&&&:1;
} PLX_DMA_PARAMS;
PLX_PARAMS IoB
UNSIGNED32
typedef UINT_PTR&&&&&&&&&&&&&&PLX_UINT_PTR;&&
IoBuffer.u.TxParams.u.UserVa&&= (PLX_UINT_PTR)&请问这个赋值语句正确吗?地址值能赋给变量吗?还是这里面有什么玄机?请各位大神指点
搜索更多相关主题的帖子:
&&&&&&&&&&
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
地址值能赋给变量吗?
能 而且指针变量的赋值就是这么写的
int *p = &a;
事实上 即使不是指针变量 也能这么写
int p = &a;
但这不大好罢了
根据命名规则猜测 你这里是给一个指针赋值
等 级:新手上路
帖 子:18
回复 2楼 zklhp
每个变量的原始定义我都查了,最后的UserVa是个64位的无符号整型,所以给变量赋了一个地址值,就让我这个新手有些费解了,那把地址赋给变量,这个用法也类似于指针吗?
等 级:贵宾
威 望:304
帖 子:25793
专家分:48814
指针只是一个储存地址值的变量。
1楼的代码不知所谓,union当struct用?
授人以渔,不授人以鱼。
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
int char int64 这都是变量 int * 等等 也是变量 大家都是变量 凭什么你能这样我不能这样?
呵呵 你有疑问 一个是对指针理解不深 一个就是某位大牛说的 受【指针神话】影响太深了 从语言的角度讲 指针也是个变量 只不过它的功能和一些行为和普通变量不大一样罢了
等 级:业余侠客
帖 子:148
专家分:276
能不能给讲讲指针呢?你是如何理解指针的?
都说指针 是 c语言的精髓!但指针这一块个人理解感觉很绕,很糊~~~
[ 本帖最后由 q 于
12:55 编辑 ]
等 级:贵宾
威 望:304
帖 子:25793
专家分:48814
指针,相当于数学坐标系中的坐标,是用来寻址定位的。你想想坐标在数学方程和求解中的作用,就知道指针的作用。就是这么理解。但若说指针能够取代数据实体,就犹如说只要坐标不要空间中的对象了。首先是掌握实体(数据和代码段)在空间中的分布状况,然后才是构建指针用于寻访并处理,没有了前者,那叫空指针和野指针。指针是间接手段,当然有点绕,比如在同样的坐标处,放置不同的东西,坐标即指针是一样的,但并非同一个东西,所以不能只看指针的指向,同时还需要看它指的是什么,那才是最终目标。总之,手段很重要,但不等于说应该把手段视为目标。别的高级语言,是力图让程序员把注意力集中在目标身上,把如何寻访目标的过程和手段隐藏起来,而C则把内部细节公开了,如此而已,其实大家都是一样的做法。
授人以渔,不授人以鱼。
版权所有,并保留所有权利。
Powered by , Processed in 0.135418 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights ReservedPython中变量传递时的引用和赋值
我的图书馆
Python中变量传递时的引用和赋值
导读:Python中不明确区分赋值和应用,一般对静态变量的传递为赋值,对动态变量的传递为引用。(注,对静态变量首次传递时也是应用,当需要修改静态变量时,因为静态变量不能改变,所以需要生成一个新的空间存储数据)个人觉得分清楚规则即可比较容易的区别。Python中不明确区分赋值和应用,一般对静态变量的传递为赋值,对动态变量的传递为引用。(注,对静态变量首次传递时也是应用,当需要修改静态变量时,因为静态变量不能改变,所以需要生成一个新的空间存储数据)个人觉得分清楚规则即可比较容易的区别。字符串,整数,元组均为静态变量列表,字典为动态变量。以下示例在Python 2.7环境下,id()函数可显示变量内存地址例1:整数传递a = 4print id(a) #id函数显示变量内存地址b = aprint id(b)b = 6print id(b)&&&说明,1.a被赋值42.b是a的引用3.b改变,因为此时b指向的是一个静态变量4,所以给b赋值时,先将6存入一个和4不同的地址,然后b再指向6的地址例2:变量传递a = "mm"print id(a)b = aprint id(b)b = "nn"print id(b)&&&说明:1.a为一个指向字符串的变量名2.a传递给b时,b为一个引用指向和a相同的地址3.当b被赋给一个新字符串值时,因为b指向的"mm"是一个静态变量,所以生成一个新空间存放"nn",然后b指向"nn"例3:列表的地址存储(以下为个人理解,未查源代码,如有错误请指正)&&&说明:从输出的1,2,3行看出,a的地址&a[0]的地址&a[1]的地址,而且a[0]和a[1]地址间相差较远,所以python中的列表绝对不是c中的数组,应该是个链表。(从python列表具有append()函数也可以看出)命令第5行a传递给b时,从输出6,7行看,a和b指向了同一个地址,b为a的一个引用,a,b的值应该是指向链表头的指针。命令第6行,b[0]值发生改变,从输出4,5行看,a,b内容同时都发生改变,从输出6,7行a,b指向的还是同一个地址,从输出7行看a[0]的地址发生了改变,所以应该时链表的第一个节点被替换(即使变量类型兼容),所以也可以理解为什么python可以不关注变量类型。输出第8行为a[1]的地址,没有发生改变命令第13行,b[1]被改变,分析同上,a,b指向的同一个链表的尾元素被替换例4:列表传递(引用)a = [4]print id(a)b = aprint id(b)b[0] = 6print id(b)&&&说明;同上例理解例5:列表赋值a = [4]print id(a)b = a[:]print id(b)b[0] = 8print id(b)&&&说明:1.a指向一个动态变量列表2.b得到a列表的一个copy存储在一个新的空间,b指向一个新地址(b = a 和b=a[:]的区别可从 ,b=a,b=a[1:3]的区别进行理解)3.b的第一个元素赋值8,不影响a例6:字典引用a = {"i":99}print id(a)b = aprint id(b)b["o"] = 8print id(b)print "a=", aprint "b=", b&&&a= {'i': 99, 'o': 8}b= {'i': 99, 'o': 8}说明:1.a指向一个动态变量2.b为a的一个引用3.b新增了一个变两,a也新增例7:字典赋值a = {"i":99}print id(a)b = a.copy()print id(b)b["o"] = 8print id(b)print "a=", aprint "b=", b&&&a= {'i': 99}b= {'i': 99, 'o': 8}说明:1.a指向一个动态变量2.b为a的一个拷贝,指向一个新地址3.b新增了一个变量,a不变例8:不同类型变量传递a = "mm"print id(a)b = aprint id(b)b = 8print id(b)print "a=", aprint "b=", b&&&a= mmb= 8说明:1.a指向一个静态2.b为a的一个应用,指向和a相同的地址3.b发生了改变,指向一个新的数据地址
上一篇PYTHON 与C相互交互调用实例解析
下一篇Python学习5--常见笔面试题整理
总结:a = "mm"print id(a)b = aprint id(b)b = 8print id(b)print "a=", aprint "b=", b文章评论 以下网友留言只代表其个人观点,不代表本网站的观点和立场。
TA的最新馆藏
喜欢该文的人也喜欢数组的赋值会把内存地址也赋给这个数组,为什么变量的赋值不会【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:631,052贴子:
数组的赋值会把内存地址也赋给这个数组,为什么变量的赋值不会收藏
去看下数据在内存中的存储方式呗
因为你根本没有给b数组赋值,只是在对b数组中取出来的数进行运算
第二幅图的赋值准确来说是基本类型的赋值。基本类型的值都是复制值本身,但是数组这样的对象都是复制内存的引用。
因为数组是引用
登录百度帐号推荐应用如何区分赋值表达式和给变量赋初值?
给变量赋初值时,不能写成a=b=c=5
而在赋值表达式中a=b=c=5,进行右结合后c=5,b=c,a=c
这两者又如何a区别?和对待?
我们可以这样理解:给变量赋初值、变量的初始化、赋值表达式是三个不同的概念。
1、给变量赋初值:就是在定义变量的同时,或者变量定义之后给变量进行赋值。(包含了变量初始化这一层面)
例1:int i=0,j=0,k=0;
例2:int i,j,k;i=0;j=0;k=0
2、变量初始化:在变量定义的同时赋以初值的方法,称之为变量初始化。
例:int i=0,j=0,k=0;
但是在变量的初始化声明中不允许连续赋值。
例:int i=j=k=0; 这句是错误的。由于表达式i=j=k=0,可以理解为i=(j=(k=0)),显然,j和k变量还未声明变量类型,就要去赋值和接受赋值,显示是不合法的。
3、赋值表达式:由赋值运算符“=”连接的式子称之为赋值表达式。一般形式为:变量=表达式。赋值表达式的功能是计算表达式的值再赋予左边的变量。赋值运算符具有右结合性。
int i,j,k;
因为表达式i=j=k=0 等价于 i=(j=(k=0))。因为i,j,k三个变...
我们可以这样理解:给变量赋初值、变量的初始化、赋值表达式是三个不同的概念。
1、给变量赋初值:就是在定义变量的同时,或者变量定义之后给变量进行赋值。(包含了变量初始化这一层面)
例1:int i=0,j=0,k=0;
例2:int i,j,k;i=0;j=0;k=0
2、变量初始化:在变量定义的同时赋以初值的方法,称之为变量初始化。
例:int i=0,j=0,k=0;
但是在变量的初始化声明中不允许连续赋值。
例:int i=j=k=0; 这句是错误的。由于表达式i=j=k=0,可以理解为i=(j=(k=0)),显然,j和k变量还未声明变量类型,就要去赋值和接受赋值,显示是不合法的。
3、赋值表达式:由赋值运算符“=”连接的式子称之为赋值表达式。一般形式为:变量=表达式。赋值表达式的功能是计算表达式的值再赋予左边的变量。赋值运算符具有右结合性。
int i,j,k;
因为表达式i=j=k=0 等价于 i=(j=(k=0))。因为i,j,k三个变量都已经预先声明为int型了,是合法的赋值运算,所以是正确的!
A不对 C中不允许出现连等。
对它改变复制的话,就输入
这位朋友今后编程一定要记着 c语言是一种强类型的语言 也就是说c语言编程中如果类型不匹配的话 很可能会出现数据错误 以后一定要养成好习惯哦你忽略了你数据中的类型...
这个的意思就是你的这个变量虽然给他赋值啦,但是并没有使用到他! 就相当于你装修好了一个房间,但是你没有住到里面去。【如果我的回答对你有用,麻烦设为好评,谢谢】
在设置里面有
答: 关于普及岛语言与价位问题?
答: 如果你理解能力强考数据库,其中比如关系数据库之类的需要去领悟如果你记忆能力强考网络,各种各样的名词,背下来就得分。还有官方指定的教材要有,上机最好做一做南开百题...
答: 新年好!首先,你必须了解计算机的组成和结构以及操作系统的运作原理,这是基础如果你想学习开发多线程、WINDOWS应用、动态链接库、WINDOWS组件的话,建议你...
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区9183人阅读
KeilC(61)
MCU 51(56)
应用中的实际问题:通过I2C接口发送到MCU一个地址数据(unsigned char AdData),一个待写入数据(unsigned char DaData)。
希望将DaData的值写到MCU内存地址为AdData的寄存器当中。代码如下:
unsigned char * pR
// 创建一个指针变量
pReg = (unsigned char *) AdD
// 将给定的寄存器地址付给指针
*pReg = DaD
第二行的(unsigned char *)是关键!
由指针概念的规定,这样赋值 unsigned char * pReg = AdD 是非法的。用第二行这种方法才可以完成此操作。
参考资料:
比如说给出指定的内存地址:0x0012ff7c,然后想给这个内存地址赋值整数 55
& int *b = (int *)0x0012ff2c;
& *b = 55;
这样的方式赋值。
那我想问下如果是这样的方式:
int a=0x0012ff2c;
int *b = (int *)a;
这样可以么?
我自己试了下是可以的,可是看到有人说是不行的,所以不知道是不是自己试得不对还是他说错了。
所以求教下各位。
以下是我自己试的代码
void main(int argc, char* argv[])
int a=0x0012ff2c;
int *b =(int*)a;&&&& //我的理解是:在这a被转换为指向int变量的指针,所以他的内容0x0012ff2c就是a指向的变量的地址
cout&&*(int *)0x0012ff2c&&&&&& //debug输出的是55
cout&&a&&&&&&&&&&&&&&&&&&&&&& // 输出0x0012ff2c
cout&&&a&&&&&&&&&&&&&&&&&&&&& // a的地址是0x0012ff7c
cout&&b&&&&&&&&&&&&&&&&&&&&&&& // b指向的是0x0012ff2c
我自己试了下是可以的,可是看到有人说是不行的,所以不知道是不是自己试得不对还是他说错了。
所以求教下各位。
----------------------------------------------------------
有人说不行指的不是语法不行,语法是没有问题的,但这样指定的一段内存区域,很有可能是一段不能写的内存,这样会产生运行期错误。
就是(int*)a 这个操作,是不是把a转化成了一个指针,指向的就是内存0x0012ff2c 了?
-------------------------------------------------------------------------
不是把a转换成指针,而是把a的值转换成指针,a本身没有任何改变。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1000342次
积分:12933
积分:12933
排名:第1016名
原创:234篇
转载:682篇
评论:69条}

我要回帖

更多关于 java变量只能赋值一次 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信