黑马程序员技术交流社区
标题:
基础的OC问题,求解
[打印本页]
作者:
小小黑马很成器
时间:
2015-5-17 17:24
标题:
基础的OC问题,求解
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
@public
int age;
double height;
}
- (void)print;
@end
void test1(int newAge, double newHeight);
void test2(Person *newP);
void test3(Person *newP);
void test4(Person *newP);
int main()
{
Person *p = [Person new];
p->age = 10;
p->height = 1.5f;
test1(p->age, p->height);
[p print];
test2(p);
[p print];
test3(p);
[p print];
test4(p);
[p print];
return 0;
}
@implementation Person
- (void)print
{
NSLog(@"年龄=%d,身高=%f", age, height);
}
@end
void test1(int newAge, double newHeight)
{
newAge = 10;
newHeight = 1.6;
}
void test2(Person *newP)
{
newP->age = 20;
newP->height = 1.7;
}
void test3(Person *newP)
{
Person *p2 = [Person new];
p2->age = 40;
p2->height = 1.8;
newP = p2;
newP->age = 30;
}
void test4(Person *newP)
{
Person *p2 = newP;
p2->age = 50;
p2->height = 1.9;
newP->age = 60;
}
为什么调用test3函数的输出结果是
年龄=20,身高=1.700000
作者:
香草芭芙
时间:
2015-5-17 20:37
void test3(Person *newP)
{
// 1.执行到这 newP指针指向 p的存储空间
Person *p2 = [Person new];
p2->age = 40;
p2->height = 1.8;
newP = p2; // 2. newP指针指向 p2的存储空间,和原来的p没有关系了.
newP->age = 30; // 3. 和p没关系了 怎么改也没用.
}
复制代码
作者:
zhangshuai
时间:
2015-5-23 17:49
因该是 newP指针指向 p2的存储空间,和原来的p没有关系了;
没有办法改写 原来的指针
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2