之前一直对指针变量的概念一直模模糊糊,今天查了一些资料,做个记录。
OC中的内存地址:
一:指针变量自己所在的内存地址(指针变量也是变量,也有内存地址)
二:指针变量所指向的内容的内存地址
NSString*a =@"test";
NSString*b =@"test";
//打印对象的内存地址
NSLog(@"%p----%p",a,b);
// 打印结果:
0x101355300----0x101355300
//打印指针自己的内存地址
NSLog(@"%p----%p",&a,&b);
// 打印结果:
0x16f4ff9b0----0x16f4ff9a8
这段代码中 a 是指针变量,变量就有内存地址。&a相当于取址运算,&a 是指针变量a的内存地址。
NSLog(@"%p----%p",a,b);打印的是指针变量 a 指向的内容“test”所在的内存地址。又因字符串存储在字符常量区,相同的字符串不会重新分配内存,故a和b所指向的内容的内存地址相同。