C указатели против Objective-C указатели
Я пришел из Objective-C и пытаюсь расширить свои знания в C. Однако меня смущает одна вещь:Разница между указателями в C и Obj-C. Как вы можете видеть из приведенных ниже примеров, кажется, что между двумя языками дела обстоят немного по-разному, и мне было интересно, не могли бы вы помочь объяснить, почему?
C код работает нормально:
void myFunction()
{
int x, *pointerX;
pointerX = &x;
*pointerX = 5;
// Prints: "x is 5"
printf("x is: %i", x);
}
Код Obj-C не работает:
- (void)myMethod
{
NSString *string = @"Caramel coffee", *stringPointer;
stringPointer = &string; // Warning: Assignemnt from incompatible pointer type
*stringPointer = @"Chocolate milkshake"; // Exception: Incompatible types in assignment
NSLog(@"string is: %@", string);
}
Вопрос: Почему можноя назначаю stringPointer адресу памяти строки (stringPointer = &string;
) и почему я могу выполнить*pointerX = 5;
под C, но я могут выполнять*stringPointer = @"Chocolate milkshake";
под Objective-C?
Я понимаю, что Obj-C имеет дело с объектами, а C нет, но я могуКажется, я не могу понять, почему это не так.т работать в Obj-C. Любая помощь очень ценится. Спасибо! :)