鱼C论坛

 找回密码
 立即注册
查看: 3753|回复: 4

用typedef定义指向结构函数的指针,怎么改?

[复制链接]
发表于 2011-10-7 00:29:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ZPCG 于 2011-10-7 01:25 编辑

看了视频59,我自己想用typedef定义指向结构函数的指针,也没什么头绪,编译都不通过.帮我改一下,谢谢
  1. #include <stdio.h>
  2. #include <malloc.h>

  3. typedef struct
  4. {
  5. int num;
  6. char name[10];
  7. } *STUDENT;

  8. main()
  9. {
  10. STUDENT c();

  11. STUDENT k;

  12. k = c();

  13. printf("%d %s \n", k->num, k->name);

  14. }

  15. STUDENT c()
  16. {
  17. STUDENT p0;
  18. p0 = (STUDENT)malloc(sizeof(STUDENT);
  19. p0->name = "fishc.com";
  20. p0->num = 006;

  21. return p0;
  22. };
复制代码
谢谢二楼的正确回答,还有三楼Y。H兄弟提示字符数组的赋值,学到了,谢谢!

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-7 00:56:13 | 显示全部楼层
本帖最后由 yipwing 于 2011-10-7 00:57 编辑

给,注意括弧。。
  1. #include <stdio.h>
  2. #include <malloc.h>

  3. typedef struct
  4. {
  5. int num;
  6. char* name;   //这个地方改成指针
  7. } *STUDENT;

  8. int main()
  9. {
  10. STUDENT c();

  11. STUDENT k;

  12. k = c();

  13. printf("%d %s \n", k->num, k->name);
  14. return 0;
  15. }

  16. STUDENT c()
  17. {
  18. STUDENT p0;
  19. p0 = (STUDENT)malloc(sizeof(STUDENT));   //这个地方少个括弧
  20. p0->name = "fishc.com";
  21. p0->num = 006;

  22. return p0;
  23. };
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-7 01:09:04 | 显示全部楼层
本帖最后由 Y.H 于 2011-10-7 01:12 编辑

基本功哦!呵呵呵,加油噢,不要焦急,基本功。
耶,对哦,也对哦,不过我这种方法也对,嘿嘿。
学到东西了。复习了一下,不然我也忘记了哈哈哈。
提示:
  1. #include <stdio.h>
  2. #include <malloc.h>

  3. typedef struct
  4. {
  5.         int num;
  6.         char name[10];
  7. } *STUDENT;                     //这里加个*干嘛?

  8. main()
  9. {
  10.         STUDENT c();            //定义结构函数是要在函数名前加个*符的
  11.         
  12.         STUDENT k;              //同样定义结构变量也要加*的
  13.         
  14.         k = c();                //不加*号这里自然就错了对不?
  15.         
  16.         printf("%d %s \n", k->num, k->name);
  17.         
  18. }

  19. STUDENT c()                     //这里一样
  20. {
  21.         STUDENT p0;             //这里还是一样
  22.         p0 = (STUDENT)malloc(sizeof(STUDENT);   //p0=(STUDENT *).............还是这个错误没加*
  23.         p0->name = "fishc.com";                 //晕字符数组哪有这样赋值的,基本功啊。可以用strcpy函数复制字符串进去啊,或者用个输入语句,例strcpy(p0->name, "www.fishc.com");
  24.         p0->num = 006;
  25.         
  26.         return p0;
  27. };                                              //这里还加个;结束符干嘛?
复制代码



小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-10-7 01:14:45 | 显示全部楼层
本帖最后由 ZPCG 于 2011-10-7 01:17 编辑


你没明白我的意思,我如果按你的意思,是用typedef定义结构函数,我已经做过了,现在我是想定义结构函数的指针,小甲鱼的视频没讲到这个,所以我想一下,是不是也有,所以我编了个,还有最后一行,那是个结构,加不加;都没错的,你自己编译下就知道,不过还是实在感谢你帮我解答那么多的贴了,爱死你了.
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-10-7 01:15:55 | 显示全部楼层
ZPCG 发表于 2011-10-7 01:14
你没明白我的意思,我如果按你的意思,是用typedef定义结构函数,我已经做过了,现在我是想定义结构函数的指针 ...

嘿嘿,我也发现了,所以我才在最前面加上个 学习了,复习了,
哈哈哈。开始没发现。


不过二楼的应该是正确的。
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-21 02:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表