Пожалуйста, помогите мне. Я полностью смущен в этом адресе памяти.Адрес памяти массива
NSMutableArray *arr = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3", nil];
NSLog(@"Address of array = %p",&arr);
NSLog(@"Array's element Address = %p",arr);
NSLog(@"Address 0th element %p",[arr objectAtIndex:0]);
NSLog(@"Address of array =%lx",(long)&arr);
NSLog(@"Array's element Address = %lx",(long)arr);
NSLog(@"Address 0th element %lx",(long)[arr objectAtIndex:0]);
**Output**
Address of array = 0xbfffd804
Array's element Address = 0x866f340
Address 0th element 0x4748
Address of array =bfffd804
Array's element Address = 866f340
Address 0th element 4748
Я получаю этот выход, но я запутался со вторым и третьим выходом, потому что в соответствии с моим knowldge второго и третьего выхода должна быть такой же. Поэтому, пожалуйста, любой может объяснить мне. Заранее спасибо.
Вы имеете в виду, что адрес имеет другой адрес от 0-го элемента. Если это переменная intanstance. Правильно ? –
@DharmbirChoudhary: Да, адрес объекта NSArray не совпадает с адресом первого элемента массива, и на самом деле нет никакой связи между ними. – Chuck
@ Черт, вы подразумеваете, что в этом случае разные понятия языка c-c и 'c'. Я думаю, что на языке «c» адрес массива совпадает с адресом первого элемента в массиве. –