现在的位置: 首页 > 综合 > 正文

各种ios语法

2013年10月28日 ⁄ 综合 ⁄ 共 1370字 ⁄ 字号 评论关闭

消息调度 @selector参数列表
   @selector(...) 语句是Objective-C 中用来指定某个特定方法。关键在于,绝不能忘记函数后面的冒号!冒号告诉 Objective-C:“去找一个名为XXX的方法,这个方法有且只有一个参数”。如果忘记写冒号,编译器还是可以通过的,但是程序一运行就会发生崩溃。在 Debugger Console 窗口中,你会看到这样的错误日志:“unrecoginized  selector sent to instance...”。
@selector(...) 中的冒号个数一定要与所指定的方法参数个数相同。例如:

- (void) example:(ccTime)delta sender:(id)sender flag:(bool)aBool

 那么,对应的@selector语句就应该是:

@selector(example:sender:flag:);
 

->运算是间接寻址:

比.运算的寻址速度更快,而且你用多指针的话会发现指针用->这种调用方式更简洁,几乎没人会使用p[0].k或*p.k这样的调用方式。

对于以下变量定义,以下表达式正确的是:()
struct node{
char s[10];
int k;
}p[4];

A.p->k=2 B.p[0].s="abc" C.p[0]->k=2 D.p->s='a'

答案选A。->是指针特用的,p->k表示p对象中的k变量
B错,只有在声明字符数组的时候才能将一个字符串赋给数组。如:char a[5] = "abc";而
char a[5]; a="abc";这种写法是错的。
C错,p[0]不是指针,不能用->。
D错,不能将一个 const char 类型的字符 'a' 赋给 数组 s。双引号就对了

我这样理解:
p指代的是地址 即p[0]的地址,所以p->k=2 等价于p[0].k=2;->是指针特用的

^异或运算符,位值相同为0,不同为1.

a1 = 0x01;    //0000 0001
a2 = 0x00;    //0000 0000
a3 = 0x03;    //0000 0011
a4 = 0x02;    //0000 0010
b1 = a1 ^ a2; //0000 0001
b2 = a1 ^ a3; //0000 0010
b3 = a1 ^ a4; //0000 0011

完整的式子是这样的x^=y,书上写的x^=y,等价于x=x^y,是怎么算的??
^=   是个异或并赋值的操作符。属于位操作符。二者不同返回1,相同返回 0;
意思是   x与y异或的结果存入 x。
假如 x的二进制是 00000000 00000000 00000000 11111111; 或者更长
y的二进制是  00000000 00000000 11111111 00001111;
则 x^=y;之后  x 的二进制是 00000000 00000000 11111111 11110000;

c语言中的\a怎么用?
#include <stdio.h>
int main()
{
printf("test:\a");
return 0;
}
测试的时候,会听到嘟的一声,它不能自动播放音乐的,就一个“嘟”

">>="在C语言什么意思?

比如a>>=2,等同于a=a>>2,是指a右移两位,这里的右移指的是a的二进制数形式的右移,相当于a缩小为原来的四分之一。>>是位运算中的右移符,后跟数字,表示右移的位数,右移后原数(二进制形式)高位补零,与此相对的还有左移符<<,用法类似

抱歉!评论已关闭.