编程C,C ++,Java,PHP,Ruby,图灵,VB
计算机科学加拿大 
编程C,C ++,Java,PHP,Ruby,图灵,VB  

用户名:   Password: 
 登记登记   
 "a value of type "float"无法分配给类型的实体"float *""
指数 -> 编程,C. -> C帮助
查看上一个主题 可打印的版本下载主题订阅本主题 私人信息刷新页面 查看下一个主题
作者 信息
srlancelot39.




邮政发布: 星期五2014年7月11日10:08 AM   Post subject: "a value of type "float"无法分配给类型的实体"float *""

为什么可以将“int”的值分配给类型“int *”的实体,但是不能将“浮点”类型的值分配给“float *”的实体?

我的情况是,我将整数传递给指向整数的指针,并将漂浮到指向浮点的指针。它没有整数问题,但它似乎没有在浮子上执行的相同操作。为什么是这样?
赞助
赞助
赞助
赞助
魔鬼




邮政发布: 星期五2014年7月11日10:35 AM   Post subject: RE:"a value of type "float"无法分配给类型的实体"float *""

如果没有看到代码,最可能的答案是C的类型系统非常松动。

指针(对任何内容)实际上只是一个积分值(通常为4或8字节,而是可以是任何东西),其代表您可以阅读的内存地址,以便找到它指向的东西。因此,int *是表示包含积分值的内存地址的积分值。 float *是表示包含浮点值的内存地址的积分值。

我假设你的代码如下所示:
代码:

㈡ *i;
我= 5; //似乎工作,但真的不做你的期望

漂浮 *f;
f = 1.2f;  // compile error


编译错误发生,因为您正在尝试设置(积分)指针 地址 浮点值,不会有任何意义。你真正想要的是设置指针的值。为此,您需要遵循或“取消引用”指针:

代码:

漂浮 *f = (float*) malloc ( sizeof ( float ) ); //别忘了分配你的指针
* f = 1.2f; //注意星号:这是在此上下文中的Dereference运算符
自由( f );  // if you malloc() then you MUST free()


Integer分配在编译时不会失败的原因是您正在设置积分指针 地址 到一个整数值,c允许。如果您试图解密该指针,那么您将(可能)找到垃圾数据或触发分段故障(Windows上的EACSCIOLATION)。

代码:

㈡ *i;
我=(int*) malloc ( sizeof(int) );
* i = 5; //按照指针的地址(i)并分配其价值
我= 5; //覆盖指针的地址(i) - 坏,不要这样做!
自由( i ); //如果覆盖指针的地址,您将无法释放它 - 非常糟糕!
srlancelot39.




邮政发布: 星期五2014年7月11日8:46   Post subject: Re: "a value of type "float"无法分配给类型的实体"float *""

谢谢你!是的,我今天问了一位朋友,他们也指出,它试图将浮点值分配为地址,当然当然就像你所说的那样。
对不起未经详细说明,所讨论的代码如下所示:
C:
//a_header_file.h
#ifndef a_header_file_h.
#define a_header_file_h.
塑造 student
{
漂浮 等级,* P_GRADE; //学生的成绩
};
#万一

C:
//not_the_main_c_file.c
//函数的开始===
/ *
代码
* /

漂浮 tempgrade = 0;
学生[学生count.].P_GRADE. = &(学生[学生count.].年级);
/ *
tempgrade通过用户提供新的价值
* /

学生[学生count.].P_GRADE. = tempgrade; //错误在这里(at the "=")
/ *
代码
* /

//函数结束===


我正在为等级(和其他变量)创建指针,以便其值可以在函数之外的其位置更新。否则,一旦函数终止,就会丢失该值,如您所知道的那样。

编辑:
我改变了:
C:
学生[学生count.].P_GRADE. = tempgrade;


到:
C:
*(学生[学生count.].P_GRADE.) = tempgrade;


现在它似乎工作了。
从上一个显示帖子:   
   指数 -> 编程,C. -> C帮助
查看上一个主题 告诉一个朋友可打印的版本下载主题订阅本主题 私人信息刷新页面 查看下一个主题

11  [ 3 Posts ]
跳到:   


Style:  
搜索: