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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹雨 中级黑马   /  2014-7-1 17:41  /  2504 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 曹雨 于 2014-7-2 15:05 编辑

如果在main函数中定义一个下划线变量,
1,如果有同名成员变量。会报错还是怎么的,我没有环境测试。。
2,如果没有同名成员变量,仅仅会作为一个普通变量吗?

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

7 个回复

倒序浏览
本帖最后由 Littlekin 于 2014-7-1 18:01 编辑

成员变量是自定义的类里面才有的,main方法是静态方法,是不会有它自己的成员变量的。
回复 使用道具 举报
本帖最后由 曹雨 于 2014-7-1 18:19 编辑
Littlekin 发表于 2014-7-1 17:59
成员变量是自定义的类里面才有的,main方法是静态方法,是不会有它自己的成员变量的。 ...


main方法的下划线变量就作为一个变量存在了对吗?如果这样的话这个变量和前面类的成员变量同名怎么办
main函数是静态函数,其他一般调用的C函数和oc方法都是动态的对么

回复 使用道具 举报
曹雨 发表于 2014-7-1 18:12
main方法的下划线变量就作为一个变量存在了对吗?如果这样的话这个变量和前面类的成员变量同名怎么办
mai ...

main方法中的下划线变量是作为一个普通变量存在,至于你说的前面类是怎样的,我没明白你的意思,但如果是在main.m这个文件中引入其他类的话,变量重名这种情况不可能存在,因为如果是引用了一个类的话,那它在main方法中调用的写法是类名->_成员变量(前提该成员变量作用域是public),如果是private修饰的成员变量,那么它在main方法中的调用是利用setter和getter方法调用,写法是[对象名 方法]。如:[stu age];相当于调用Student类的getter方法获得_age这个私有的成员变量。

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
首先关于你的问题,成员变量是类的变量是全局的,而main方法中的变量是局部的只对主函数内部有权限。有同名变量肯定会报错的,如果没有同名变量那就是一个普通的局部变量。
回复 使用道具 举报
Littlekin 发表于 2014-7-1 19:13
main方法中的下划线变量是作为一个普通变量存在,至于你说的前面类是怎样的,我没明白你的意思,但如果是 ...

谢谢 你{:3_59:}
回复 使用道具 举报
奋斗2014 发表于 2014-7-1 19:28
首先关于你的问题,成员变量是类的变量是全局的,而main方法中的变量是局部的只对主函数内部有权限。有同名 ...

- (void)test
{
        int _age = 20;//此处的_age 是局部变量还是成员变量?
        NSLog(@"Person的年龄是%d岁",_age);//输出20,没必要大老远去访问成员变量,就近原则。
       
}

解答:
成员变量和局部变量同名
当成员变量和局部变量同名时,采取就近原则,访问的是局部变量
用self访问成员变量,区分同名的局部变量


不一定会报错吧,我今天看到后面的视频了,老师这么说的
回复 使用道具 举报
曹雨 发表于 2014-7-2 15:05
- (void)test
{
        int _age = 20;//此处的_age 是局部变量还是成员变量?

这样说的话,好像是可以!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马