社区
C语言
帖子详情
error C2102: '&' requires l-value
yourcarol
2005-04-19 09:11:36
#include <stdio.h>
//#include <iostream>
struct User
{
char name[9];
int age;
};
void main()
{
struct User *a;
unsigned long i = &(unsigned long)a;
printf("%l",i);
}
就是这个东东,找了很长时间没有看到解决的方法;
请师兄们帮忙看看!
谢谢!
...全文
1290
13
打赏
收藏
error C2102: '&' requires l-value
#include //#include struct User { char name[9]; int age; }; void main() { struct User *a; unsigned long i = &(unsigned long)a; printf("%l",i); } 就是这个东东,找了很长时间没有看到解决的方法; 请师兄们帮忙看看! 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
AAA235
2005-07-19
打赏
举报
回复
你在MFC中编译肯定不能通过,会报error c2102: requires l-value
yourcarol
2005-04-20
打赏
举报
回复
这里想请搂主解释一下右值的概念!
谢谢!
yourcarol
2005-04-20
打赏
举报
回复
我看的是发表在VC知识库的在线杂志第27期上面的一文章:
//http://www.vckbase.com/vckbase/index2.html
//可以在这里下载;
大型作业答辩:C/S考试系统程序制作详解;
这个是定义的结构:
struct ContextKey
{
SOCKET sock;
char InBuffer[4];
OVERLAPPED ovIn;
int nOutBufIndex;
char OutBuffer[MAXLINE];
OVERLAPPED ovOut;
DWORD dwWritten;
};
struct ContextKey *pCntx;
UNREFERENCED_PARAMETER(pVoid);
bResult = GetQueuedCompletionStatus(
ghCompletionPort,
&dwNumRead,
&(DWORD)pCntx,
&lpOverlapped,
INFINITE
);
在GetQueuedCompletionStatu()函数中的为什么第三个参数可以编译通过,但是我写的就不可以!
我和同事百思不得其解,所有的设定也都看了,为什么原理上不可行的东西却偏偏可以编译通过!
不知道是哪里出了问题?
还请大家一起探讨一下!
fjjfxz
2005-04-20
打赏
举报
回复
左值表达式就是可以出现在赋值号左边的式子,即有地址,代表着某一内存单元。
右值表达式就是只能出现在赋值号右边的式子,当然,左值同时也可以是一个右值表达式
Maxwell
2005-04-19
打赏
举报
回复
你应该把&放到a的前面,先把a的地址取出来,然后把这个地址转换成unsigned long。
要打印地址不是有个%p吗,用那个比这样方便。
zengwujun
2005-04-19
打赏
举报
回复
struct User *a;
unsigned long i = (unsigned long)(&a);
printf("%ld",i);
kobefly
2005-04-19
打赏
举报
回复
回复人: yourcarol(闪光的美学) ( ) 信誉:100 2005-04-19 09:55:00 得分: 0
a实际上是一个地址,我这里只是将它转换为了unsigned long类型,然后去地址的地址;
从头看过来;我定义了一个结构,然后用它声明了一个变量;用一个指针a指向他,然后在取这个指针的地址,是不是这个指针a的地址由问题!
这样有什么问题?
我看到一个强人这样做了!
但是我写就有问题!
上google去搜索都是外文的!
呵呵
你的想法没有错,但是
你可以
unsigned long i = &a;
你却不可以
unsigned long i = &(unsigned long)a;
为什么?
因为unsigned long)a是将a转换为一个unsigned long,结果放在哪里呢?
是a中吗,不是,a的值并不会变,所以只能存放在一个临时变量中
临时变量的地址可以确定吗?
不可以
所以
你的操作就不ok了
zhangfjj
2005-04-19
打赏
举报
回复
问题是
&(unsigned long)a ===>相当于
&((unsigned long)a)也就是把地址转换为unsigned long,此时它是一个值了
就是取出a的值,转换为一个unsigned long,并不是直接改变a的属性
就如:float x=3.5;
(int)x 即取出x的值3.5,转化为int,即值为3,但x并不变
int main()
{
float x=3.5;
int y;
y=(int)x;
cout<<"y="<<y<<",x="<<x<<endl;
return 0;
}
yourcarol
2005-04-19
打赏
举报
回复
a实际上是一个地址,我这里只是将它转换为了unsigned long类型,然后去地址的地址;
从头看过来;我定义了一个结构,然后用它声明了一个变量;用一个指针a指向他,然后在取这个指针的地址,是不是这个指针a的地址由问题!
这样有什么问题?
我看到一个强人这样做了!
但是我写就有问题!
上google去搜索都是外文的!
junmayang
2005-04-19
打赏
举报
回复
&只能对左值表达式求值
晨星
2005-04-19
打赏
举报
回复
哦,新版主就是高!
zhangfjj
2005-04-19
打赏
举报
回复
&只能对左值表达式求地址
(unsigned long)a经强制转换后成了一个右值
dongpy
2005-04-19
打赏
举报
回复
unsigned long i = &(unsigned long)a;
=======================
(unsigned long)a强制转换,产生unsigned long类型的临时变量,临时变量不能取地址。
error
C2102
: ‘&‘
require
s l-
value
这个错误通常是因为你尝试对一个非左值(r-
value
)进行取地址操作。在 C++ 中,左值是可以被取地址的,而右值则不能。如果你仍然遇到这个错误,可以将代码贴出来,我们一起来看看问题所在。// 对左值 a 进行取地址操作。解决这个错误的方法是确保你对一个左值进行取地址操作。
c语言 prototype_求C语言高手解答
error
C267: 'Tdelay':
require
s ANSI-style prototype问题!
#include#defineucharunsignedchar#defineuintunsignedint#defineLED_ON0x01sbitdsio=P1^7;sbittemp_add=P1^0;sbittemp_sub=P1^1;sbitup1_temp=P1^2;sbitdown_temp=P1^3;sbi...#include#define uchar unsigned char#...
c语言出现错误如何改,C语言程序出错
error
C2109、
error
C2102
、
error
C2064 如何修改?...
C语言程序出错
error
C2109、
error
C2102
、
error
C2064如何修改?0brave_ice2016.10.14浏览56次分享举报错误: cpp(18) :
error
C2109: subscript
require
s array or pointer type cpp(18) :
error
C2102
: '&'
require
s l-
value
cpp(19)...
net.alchim31.maven:scala-maven-plugin:maven依赖无法下载或无法编译
[
ERROR
] Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.0:compile (default) on project iteblog: wrap: org.apache.commons.exec.ExecuteException: Process exited with an
error
: 1 (Exit
value
: 1) -> [Help 1] [
ERROR
] [
ERROR
] To see the .
Process exited with an
error
: -10000(Exit
value
: -10000)
打包出现如标题所示异常即Process exited with an
error
: -10000(Exit
value
: -10000)一开始一直拿警告信息到网上查找解决方案,但是有时候可以打包成功有时候又不可以,一开始也是这样。根据该博客指引把对应的虚拟机内存空间调大即可解决当前
error
。如果还是失败,就一直往上加下面的参数值。 java.lang.StackOverflow
Error
...
C语言
69,377
社区成员
243,075
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章