A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

下面是代码:

#import <Foundation/Foundation.h>

typedef struct  student{
    int age;
    double height;
   
}* myStu;

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        myStu stu1,stu2;
        stu1->age=20;
        stu1->height=46.0;
        
        stu2->height = 50.0;
        stu2->age=20;
        
        NSLog(@"%d-%f-%d-%f",stu1->age,stu1->height,stu2->age,stu2->height);
      
    }
    return 0;
}

编译的时候一丁点错误都没有,可是运行崩溃,求解,求搭救

6 个回复

正序浏览
mony 发表于 2015-5-19 17:22
如果按照楼主原来的想法的话,就需要先分配内存。像下面的方法。

受教了 谢谢
回复 使用道具 举报
还没学到那里去....
回复 使用道具 举报
不知道为什么要定义一个指向结构的指针类型?不过你这样编译器只会创建指针,而结构是不会创建的
回复 使用道具 举报
如果按照楼主原来的想法的话,就需要先分配内存。像下面的方法。
  1. #import <Foundation/Foundation.h>

  2. typedef struct  student{
  3.     int age;
  4.     double height;
  5.    
  6. } *myStu;

  7. int main(int argc, const char * argv[]) {
  8.     @autoreleasepool {
  9.         
  10.         myStu stu1 = malloc(sizeof(myStu));
  11.         myStu stu2 = malloc(sizeof(myStu));
  12.         stu1->age=20;
  13.         stu1->height=46.0;
  14.         
  15.         stu2->height = 50.0;
  16.         stu2->age=20;
  17.         
  18.         NSLog(@"%d-%f-%d-%f",stu1->age,stu1->height,stu2->age,stu2->height);
  19.         
  20.     }
  21.     return 0;
  22. }
复制代码



回复 使用道具 举报
主要你定义的是地址,但是初始化没有分配地址...
回复 使用道具 举报
  1. #import <Foundation/Foundation.h>

  2. typedef struct  student{
  3.     int age;
  4.     double height;
  5.    
  6. }myStu;

  7. int main(int argc, const char * argv[]) {
  8.     @autoreleasepool {
  9.         
  10.         myStu stu1,stu2;
  11.         stu1.age=20;
  12.         stu1.height=46.0;
  13.         
  14.         stu2.height = 50.0;
  15.         stu2.age=20;
  16.         
  17.         NSLog(@"%d-%f-%d-%f",stu1.age,stu1.height,stu2.age,stu2.height);
  18.         
  19.     }
  20.     return 0;
  21. }
复制代码



这样试试
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马