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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 山涧小草 中级黑马   /  2014-8-18 21:06  /  2222 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 山涧小草 于 2015-7-9 22:17 编辑

#import<Foundation/Foundation.h>
@interface Person : NSObject      
{
    int  _age;
    char  *_name;
}

- (void)setAge: (int)newAge;      // 成员变量_age的set的声明。
- (int)age;      // 成员变量_age的get的声明。

- (void)setName: (char *)newName;       // 成员变量_name的set的声明。
- (char *)name;        // 成员变量_name的get的声明。
@end

@implementation Person
- (void)setAge: (int)newAge
{
    _age = newAge;
}

- (int)age
{
    return _age;
}

- (void)setName: (char *)newName
{
    _name = newName;
}

- (char *)name
{
    return _name;
}
@end

void main()
{
    Person  *p = [Person new];      //创建一个Person新对象。
     [p setAge:22];      //_age的set方法的实现。
     [p setName:"Jack"];        //_name的set方法的实现。
     NSLog(@"此人为%d岁的%s!",[p age],[p name]);   
     return 0;
}

以上代码运行出错,求大神指错了。而且,关于指针变量使用不明白,希望懂的可以以该例讲解一下!!



17 个回复

倒序浏览
#import<Foundation/Foundation.h>
@interface Person : NSObject        //对象的声明。
{
    int  _age;
    char  *_name;
}

-(void)setAge: (int)newAge;      //成员变量_age的set的声明。
-(int)age;      //成员变量_age的get的声明。

//****************************************/错误1:应该是(char *)newName
//-(void)setName: (char )*newName;       //成员变量_name的set的声明。

-(void)setName: (char *)newName;

//*********************************/错误2:这里应该是-(char *)name
//-(char)name;        ////成员变量_name的get的声明。
-(char *)name;

@end

@implementation Person

-(void)setAge: (int)newAge
{
    _age = newAge;
}

-(int)age
{
    return _age;
}
//*************************************/错误3:这里应该是(char *)newName,char *是个整体,是种类型
//-(void)setName: (char )*newName
-(void)setName:(char *)newName
{
    _name = newName;
}
//*************************************/错误4:这里的类型应该是(char *)name
//-(char )name
-(char *)name
{
    //**********************************/错误5:这里返回的是_name不带*,因为*是种指针的类型,定义类型时用
   // return *_name;
    return _name;
}
@end
//**********************************/错误6:既然有返回值就用int类型,如果不想改这里就把return去掉
//void main()
int main()
{
    Person  *p = [Person new];      //创建一个Person新对象。
    [p setAge:22];      //_age的set方法的实现。

    //*********************************/错误7:set方法名打错了,应该是[p setName:"Jack"];
    //[p name:"Jack"];        //_name的set方法的实现。
    [p setName:"Jack"];
    NSLog(@"此人为%d岁的%s!",[p age],[p name]);
    return 0;
}

//注:错误已用//****/标注,都是很小的错误。。。。。。仔细一点就好啦,嘿嘿

回复 使用道具 举报
哥们,明白了!大恩不言谢哈!!:handshake
回复 使用道具 举报
好长,。。刚看完打算回复,发现已经解决了。。。
回复 使用道具 举报
为什么不用property声明setget方法呢,多简单。当然要记得用synthesize
回复 使用道具 举报
qq541955920 发表于 2014-8-19 07:15
为什么不用property声明setget方法呢,多简单。当然要记得用synthesize

应该他还没看到那里吧。。。嘿嘿!
回复 使用道具 举报
*_name错了
回复 使用道具 举报
大神,-(void)setName: (char)*newName;       //成员变量_name的set的声明。中的*应写成(char*),由此后面get方法中应定义为-(char*)name;
回复 使用道具 举报
     看看,敲敲
回复 使用道具 举报
-(void)setName: (char)*newName;       //成员变量_name的set的声明。

这星号怎么在外面
回复 使用道具 举报
Meniny 发表于 2014-8-19 03:21
好长,。。刚看完打算回复,发现已经解决了。。。

哦哦,编辑得不太好!!本来想用代码文本编辑的,可是不会弄,哈哈
回复 使用道具 举报
★Joean_Zhou 发表于 2014-8-19 09:06
应该他还没看到那里吧。。。嘿嘿!

嗯嗯,还没有到这个知识点
回复 使用道具 举报
❤如止水之絕境 发表于 2014-8-19 10:26
大神,-(void)setName: (char)*newName;       //成员变量_name的set的声明。中的*应写成(char*),由此后 ...

收到:handshake
回复 使用道具 举报

嗯嗯,明白了
回复 使用道具 举报
itheimaXYP 发表于 2014-8-19 19:39
-(void)setName: (char)*newName;       //成员变量_name的set的声明。

这星号怎么在外面 ...

明白了,谢过了哈
回复 使用道具 举报
OC怎么觉得这么难
回复 使用道具 举报
3677065 发表于 2014-8-19 22:56
OC怎么觉得这么难

不是OC太难,是咱们功底不够……
回复 使用道具 举报
3677065 发表于 2014-8-19 22:56
OC怎么觉得这么难

其实很简单,你只要掌握这种游戏规则就行了。C++,C是最难的。会C不怕别的。相信你加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马