Adn*_*hid -1 c xcode pointers boolean objective-c
我正在使用Objective-C制作国际象棋游戏.在这个游戏中我需要使用BOOL*而不是BOOL因为我需要一个指向布尔变量的指针.当我尝试使用BOOL*时,它会在我尝试执行此操作时向我发出警告:
BOOL *isWhiteTurn;
isWhiteTurn = YES;
Run Code Online (Sandbox Code Playgroud)
该警告是:
不兼容的整数到指针转换从'BOOL'(又名'signed char')分配给'BOOL*'(又名'signed char*')
指针正好是听起来像,它指向其他一些记忆.
让我们举一个简单的例子:
BOOL actualVariable = FALSE;
BOOL *pointerVariable = &actualVariable;
Run Code Online (Sandbox Code Playgroud)
这说明pointerVariable了actualVariable.使用derefernece运算符(一元*),您可以获得指针指向的值:
printf("Value of *pointerVariable = %d\n", *pointerVariable);
Run Code Online (Sandbox Code Playgroud)
那应该打印
Value of *pointerVariable = 0
更加图形化,您可以这样看待它:
+-----------------+ +----------------+ | pointerVariable | ----> | actualVariable | +-----------------+ +----------------+
您还可以使用取消引用运算符来更改指针指向的值:
*pointerVariable = TRUE;
Run Code Online (Sandbox Code Playgroud)
如果你声明一个指针,并且不指向任何地方,那么尝试取消引用指针(即获取指针指向的内容)将导致未定义的行为.
现在关于你的警告.指针变量实际上是一个简单的整数,其值是它指向的地址.这意味着你理论上可以为它分配任何整数值,程序会认为该值是有效的地址.大多数时候它不是有效的.
你得到警告,因为通常使用整数值初始化指针是错误的事情,你应该用另一个指向同一类型的指针初始化指针.