最近初学C语言图形编程时遇到的问题

ddxz_111 2006-03-23 02:58:07
struct linesettingstype *info;
getlinesetttings(info);
printf ("%d",info->linestyle);

可以读出线的特性,并将线的信息存放到info指向的结构中
struct linesettingstype{
int linestyle;
unsigned upattern;
int thickness;
}

现在的问题是,info为指针型变量,传递给getlinesettings的只是info的值,函数getlinesettings何以将struct linesettingstype的地址赋给info?
...全文
177 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodluckyxl 2006-03-24
  • 打赏
  • 举报
回复
getlinesettings (indo);
//应该对指针做了检测其分配空间的有效性
//如果分配了则直接使用,如果未分配回返回一个对象地址
jedzhang 2006-03-24
  • 打赏
  • 举报
回复
up!
peterID 2006-03-24
  • 打赏
  • 举报
回复
跟踪到get函数里看他怎么实现的
ddxz_111 2006-03-24
  • 打赏
  • 举报
回复
结了吧,谢谢
captain_x 2006-03-23
  • 打赏
  • 举报
回复
up
SEUU 2006-03-23
  • 打赏
  • 举报
回复
接分的,多给的吧,好运!

由于参数传递是值传递,所以你没有办法通过传递指针来修改外部指针的指向
要修改参数指针,是要带两个星星的
ddxz_111 2006-03-23
  • 打赏
  • 举报
回复
现在发现实质问题如下,请大家注意问题行





/* WIN-TC BGI 图形编程模板 */

#include "Conio.h"
#include "graphics.h"
#define closegr closegraph

void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */
registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
initgraph(&gd, &gm, "");
}
int main(void)
{
struct linesettingstype info; /////////////////////////问题行1
initgr(); /* BGI初始化 */
setlinestyle (1,0,3);
getlinesettings (&indo);///////////////////////////////问题行2
printf ("%d",infdo->linestyle);
getch(); /* 暂停一下,看看前面绘图代码的运行结果 */
closegr(); /* 恢复TEXT屏幕模式 */
return 0;
}

现把问题行1改为 struct fasdffasdfa/*此处可为任意字符*/ *info; //要加*
问题行2改为 getlinesettings (indo);

编译不产生错误,并且程序运行结果与改前完全一样,这是为什么啊?

在TC2.0下调试通过
goodluckyxl 2006-03-23
  • 打赏
  • 举报
回复
c语言引用用struct linesettingstype*& in_sl 可能不行
只能使用struct linesettingstype** in_sl
用指针的形式
ykzhujiang 2006-03-23
  • 打赏
  • 举报
回复
由于参数传递是值传递,所以你没有办法通过传递指针来修改外部指针的指向


楼上的解决办法是可以的,或者使用指针引用struct linesettingstype*& in_sl
goodluckyxl 2006-03-23
  • 打赏
  • 举报
回复

void getlinesettings(struct linesettingstype** in_sl)
{
//这边赋值错误了修改一下
*in_sl = 地址;
}
goodluckyxl 2006-03-23
  • 打赏
  • 举报
回复
现在的问题是,info为指针型变量,传递给getlinesettings的只是info的值,函数getlinesettings何以将struct linesettingstype的地址赋给info?
//getlinesettings(struct linesettingstype** )这样定义函数
void getlinesettings(struct linesettingstype** in_sl)
{
in_sl = 地址;
}
调用时
getlinesettings(&info);
引用辆次就可以解决了
jinjiajie 2006-03-23
  • 打赏
  • 举报
回复
楼主知道的话就不会那么问了...
expert2000 2006-03-23
  • 打赏
  • 举报
回复
看不懂楼主的描述,getlinesetttings这个函数是怎么定义的?
jinjiajie 2006-03-23
  • 打赏
  • 举报
回复
传给函数的是info的地址,而函数的作用,是将信息放在info的地址上,因此可以将结构传给info

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧