| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 726 人关注过本帖
标题:问个指针的问题。。。迷惑了
只看楼主 加入收藏
zhouusong
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-2-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
问个指针的问题。。。迷惑了
程序目的是吧一个指针指向一个n行3列的数组,代码是这样的,
    float Rotate_Matrixs[3][4];
    float *p;   
    float Temp_Position_Body[3];
    float Temp_Position_Camera[3];
            
    float (*Object_Line_Pointer)[][3];
    float (*Draw_Object_Line_Pointer)[][2][2][Draw_Framebuf_Num_DF];
   
    float Cos_Roll,Cos_Pitch,Cos_Yaw;   
    float Sin_Roll,Sin_Pitch,Sin_Yaw;
   
    p = &Rotate_Matrixs[0][0];
    Object_Line_Pointer = p;//报错指向这里

报错如下,
Zmingl.c(145): error:  #513: a value of type "float *" cannot be assigned to
an entity of type "float (*)[][3]"

都是指针,我在tc下编译是报警,
警告 Zmingl.c 147: 指针转换后指向其它类型在 Target_Object_Rotate 函数中
但是在arm的mdk的ide下是报错编译不过去
Zmingl.c(145): error:  #513: a value of type "float *" cannot be assigned to
an entity of type "float (*)[][3]"
请问大家这是什么原因,我理解就应该是个指针赋值啊,很正常啊。。为啥呢
搜索更多相关主题的帖子: 145 
2011-02-04 22:59
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:4 
p指向浮点数的指针
Object_Line_Pointer指向一个浮点格式的二维数组的指针
他们的存储结构是不同的啊,不能乱指啊
p指向的是一个极小的只能存储一个float类型的浮点型变量,而后一个是指向的是一个二维数组,差距很大的。。。
2011-02-04 23:44
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:4 
都是指针。但所指向的东西不一样。
2011-02-05 12:41
犬虫门心
Rank: 8Rank: 8
来 自:西安
等 级:蝙蝠侠
帖 子:209
专家分:753
注 册:2011-1-25
收藏
得分:4 
这里涉及指针的基本概念问题。
迄今为止,关于指针的概念,教课书(包括国内外)都强调了一个问题:首地址。
而实际上,指针的概念有两个要素:
1、首地址;
2、指类(这个概念只在我的课堂上出现):指针所指向的空间(即,变量)的类型。
而且,后者是指针非常重要的,比第一个要素还要重要的概念。
这个指类的作用是:
指针+1,将指向向后移动一个指类长度的空间;
指针之间的操作,必须保证指类相同;
指类是C语言在解释指针所指向的空间的数据时的依据。

就楼主所问的问题而言,float *p,指针变量p的指类是float,也就是说,在C语言程序中,如果出现p+1的运算,则C语言会使其指向向后移动sizeof(float)个字节;而
    float (*Object_Line_Pointer)[][3];
    float (*Draw_Object_Line_Pointer)[][2][2][Draw_Framebuf_Num_DF];
这两个指针的定义是有问题的:如果在TC环境下,定义不会被C所禁止,但这两个指针不具备可操作性。原因:
Object_Line_Pointer这个指针的指类是:float [][3],其长度显然不确定,因此,对*Object_Line_Pointer,没有对应的确定、完整、完善的类型进行解释。
Draw_Object_Line_Pointer也一样。
如果在VC下编译,首先会出现上述两个指针变量的定义的语法错误。
请楼主上机验证。
实践是检验真理的唯一标准,书是人编的,不是神编的。

当一名对得起学生学费的老师,一直是我的目标!我会更努力的!
2011-02-05 13:10
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:4 
指针向来是c的精髓,这也是c能设计到硬件的根本,给你看个东西吧
详解指针.rar (9.28 KB)

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-02-05 20:23
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:4 
指针很重点

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2011-02-05 20:24
快速回复:问个指针的问题。。。迷惑了
数据加载中...
 
   



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

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