首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 大家莫笑我,20分求解简单结构体指针问题 [已结贴,结贴人:dynamic516]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-08 17:53:39 楼主
    #include "stdio.h"
    #include "stdlib.h"
    typedef struct {
        int a;
        int b;
    } frm_struct;
    frm_struct *my_struct;

    my_struct->a=1;
    my_struct->b=1;
    printf("\n%d\n%d\n",my_struct->a,my_struct->b);

    编译报错:
    9 C:\Documents and Settings\us\My Documents\t.c syntax error before '->' token
    11 C:\Documents and Settings\us\My Documents\t.c syntax error before string constant
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-08 18:02:011楼 得分:0
    我用的2005编译通过,有一警告
    c:\documents and settings\uull\my documents\visual studio 2005\projects\111\111\111.cpp(14) : warning C4700: 使用了未初始化的局部变量“my_struct”
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • newkt
    • 等级:
    发表于:2008-01-08 18:05:082楼 得分:0
    vc2003可以编译过啊

    还有个明显的问题,你的my_struct没有初始化就用了,是会挂掉的。
    应该先 my_struct = new frm_struct;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-08 18:05:373楼 得分:5
    你的程序不在任何函数里,所以出错
    改成这样

    #include  "stdio.h"
    #include  "stdlib.h"
    typedef  struct  {
            int  a;
            int  b;
    }  frm_struct;
    void main() // 这里
    { // 这里
    frm_struct  *my_struct;

    my_struct-> a=1;
    my_struct-> b=1;
    printf("\n%d\n%d\n",my_struct-> a,my_struct-> b);
    } // 这里
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • newkt
    • 等级:
    发表于:2008-01-08 18:07:484楼 得分:0
    C/C++ code
    /* 整理了下你的代码 : ) */ typedef struct { int a; int b; }frm_struct; frm_struct *my_struct; my_struct = new frm_struct; my_struct-> a=1; my_struct-> b=1; printf("\n%d\n%d\n",my_struct-> a,my_struct-> b); delete my_struct;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • newkt
    • 等级:
    发表于:2008-01-08 18:09:385楼 得分:0
    3楼正解.....
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • newkt
    • 等级:
    发表于:2008-01-08 18:10:226楼 得分:5
    C/C++ code
    typedef struct { int a; int b; }frm_struct; int _tmain(int argc, _TCHAR* argv[]) { frm_struct *my_struct; my_struct = new frm_struct; my_struct-> a=1; my_struct-> b=1; printf("\n%d\n%d\n",my_struct-> a,my_struct-> b); delete my_struct; return 0; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-08 18:10:377楼 得分:0
    刚才一时郁闷,少写了东西上来

    #include  "stdio.h"
    #include  "stdlib.h"
    typedef  struct  {
            int  a;
            int  b;
    }  frm_struct;
    frm_struct  *my_struct;
    my_struct->a=1;
    my_struct->b=1;
    int main(){
    printf("\n%d\n%d\n",my_struct-> a,my_struct-> b);
    }

    请使用C编译器,报错:
    8 C:\Documents and Settings\us\My Documents\t.c syntax error before '->' token
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-08 18:11:048楼 得分:0
    C/C++ code
    /* 整理了下你的代码 : ) 我再加上Main函数 */ typedef struct { int a; int b; }frm_struct; int main() { frm_struct *my_struct; my_struct = new frm_struct; my_struct-> a=1; my_struct-> b=1; printf("\n%d\n%d\n",my_struct-> a,my_struct-> b); delete my_struct; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-08 18:12:199楼 得分:0
    这两句也是要到函数里才可以的

    my_struct-> a=1; 
    my_struct-> b=1;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-08 18:12:3210楼 得分:0
    #include  "stdio.h"
    #include  "stdlib.h"
    typedef  struct  {
            int  a;
            int  b;
    }  frm_struct;
    int main(){
    frm_struct  *my_struct;
    my_struct->a=1;
    my_struct->b=1;
    printf("\n%d\n%d\n",my_struct-> a,my_struct-> b);
    return 0;
    }
    这样可以了,谢谢各位
    郁闷了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-18 13:40:2111楼 得分:0
    也可以这么写
    typedef      struct      { 
                    int      a; 
                    int      b; 
    }      frm_struct,*my_struct; 
    int  main()
    {
        my_struct Test_struct;
        ..........
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xxmv99
    • 等级:
    发表于:2008-01-18 16:22:4412楼 得分:0
    来晚,顶
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pomiox
    • 等级:
    发表于:2008-01-18 16:37:4413楼 得分:0
    都给你们回答完了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-18 19:29:2314楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-20 00:22:4415楼 得分:0
    真是该好好学学基础的东西了

    不初始化一个指针,是什么问题都有可能出现的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-20 15:25:4916楼 得分:0
    定义了指针,没有初始化,还要赋值给它,肯定是有问题了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-20 19:05:1117楼 得分:0
    16楼说的很对, 你只是定义了一个结构体指针,都不知道指向什么,然后你就给里面的内容赋值,,肯定出错。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-20 19:52:3818楼 得分:0
    没有malloc或new ,给指针分配内存
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-20 21:46:4819楼 得分:5
    C/C++ code
    #include "stdio.h" #include "stdlib.h" typedef struct { int a; int b; } frm_struct; int main(){ frm_struct *my_struct = (frm_struct *)malloc(sizeof(frm_struct)); my_struct-> a=1; my_struct-> b=1; printf("\n%d\n%d\n",my_struct-> a,my_struct-> b); free(my_struct); return 0; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-20 21:50:4120楼 得分:5
    大哥,没有分配空间就开始赋值,能对么
    新创建的指针默认指向NULL,也就是(void*)0,内存最开始处,在操作系统中是不允许访问的
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved