本帖最后由 执着的土豆 于 2014-4-27 00:57 编辑
答案在主函数的备注里面,自己看一下,不明白请追问。我觉得写的还是挺详细的。 //s->birthday = {2011,9,10}; //为什么不能赋值呢?这个不只是在oc中不可以,在c中也不可以。这行代码中在c里面解释为如下面这行代码,看着会不会很别扭? //Data={2011,9,10}; //给你举个例子可能会明白点:定义一个整形变量,值为5.你会不会写 int=5?? 你试试写int=5,编译器会报什么错误?是不是跟这个一样的错误?你总要给个类型的接收者啊。 //int a=5;这句代码是不是可以拆分为 int a;a=5;先定义一个整形的变量a,再将5赋给a, 那么下面这句也是一样的道理。 //Date d={2011,9,10};//定义结构体变量的同时赋值 [你都知道这是定义一个结构体变量了,而上面的代码你就没有定义一个结构题的变量,你只是指向那个结构体的类型就要给人家赋值,都没有给人家定义一个变量] - typedef struct{
-
- int year;
-
- int month;
-
- int day;
-
- }Date;
- #import<Foundation/Foundation.h>
- @interface Student:NSObject
- {
- @public
- Date birthday;
- double weight;
- }
- - (void)eat;
- - (void)run;
- @end
- @implementation Student
- - (void)eat
- { weight += 1;
- NSLog(@"吃完这次后的体重是%f",weight);
- }
- - (void)run
- { weight -= 1;
- NSLog(@"跑完这次后的体重是%f",weight);
- }
- @end
- int main()
- {
- Student *s = [Student new];
- s->weight = 50;
- //s->birthday = {2011,9,10}; //为什么不能赋值呢?这个不只是在oc中不可以,在c中也不可以。这行代码中在c里面解释为如下面这行代码,看着会不会很别扭?
- //Data={2011,9,10};
- //给你举个例子可能会明白点:定义一个整形变量,值为5.你会不会写 int=5?? 你试试写int=5,编译器会报什么错误?是不是跟这个一样的错误?你总要给个类型的接收者啊。
-
-
- //int a=5;这句代码是不是可以拆分为 int a;a=5; 那么下面这句也是一样的道理。
- //Date d={2011,9,10};//定义结构体变量的同时赋值 [你都知道这是定义一个结构体变量了,而上面的代码你就没有定义一个结构题的变量,你只是指向那个结构体的类型就要给人家赋值,都没有给人家定义一个变量]
- //s->birthday=d;
- s->birthday.year=10;
- NSLog(@"%d,%d,%d",s->birthday.year,s->birthday.month,s->birthday.day);
- [s eat];
- [s run];
- return 0;
- }
- /*
- 在main函数中给birthday赋值为什么不能用 s->birthday = {2011,9,10};只能用Date d = {2011,9,10};
- 不理解 ???
- */
复制代码
|