Objective c 基元数据类型目标c的指针

Objective c 基元数据类型目标c的指针,objective-c,pointers,Objective C,Pointers,我知道这可能是个愚蠢的问题 我对此完全感到困惑,我承认我没有正确理解基本知识。为什么 BOOL *booleanTest = (5 < 1)? YES : NO; 没有抛出编译错误。C的键入不像您显然认为的那样严格。将整数指定给指针是合法的,但通常是不明智的。编译器应该警告您,赋值是从整数生成指针,而不是强制转换。在这两种情况下,您都是在声明变量并在没有任何初始化的情况下使用变量本身 我假设您不知道声明和初始化之间的区别,所以在声明期间,变量的值被设置为垃圾值或一些随机值。这是如何分配的

我知道这可能是个愚蠢的问题

我对此完全感到困惑,我承认我没有正确理解基本知识。为什么

BOOL *booleanTest = (5 < 1)? YES : NO;

没有抛出编译错误。

C的键入不像您显然认为的那样严格。将整数指定给指针是合法的,但通常是不明智的。编译器应该警告您,赋值是从整数生成指针,而不是强制转换。

在这两种情况下,您都是在声明变量并在没有任何初始化的情况下使用变量本身

我假设您不知道声明和初始化之间的区别,所以在声明期间,变量的值被设置为垃圾值或一些随机值。这是如何分配的,因为指针指向的内存单元是某个随机内存单元,它被其他应用程序使用,而该应用程序将值保留在那里。 现在,在第一种情况下会发生什么:

BOOL *booleanTest = (5 < 1)? YES : NO;
这不会导致任何编译错误,因为法律允许将值存储在指向的值中。它将类型转换为指针的确切变量类型

BOOL *booleanTest = (5 < 1)? YES : NO;
int *magicNumber = value / 25;