开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第22天,点击查看活动详情
条件运算符
count=(count>20)?count-10:count+10;
条件?条件满足时的值:条件不满足时的值
优先级:条件运算符的优先级高于赋值运算符,但是低于其它运算符。
条件运算符是自右向左结合的。
嵌套条件表达式(不要用)
逗号运算符
逗号用来连接两个表达式,并以其右边的表达式的值作为它的结果。逗号的优先级是所有运算符中最低的,所以它两边的表达式会先计算;逗号的组合关系是自左向右,所以左边的表达式会先计算,而右边的表达式的值就留下来作为逗号运算的结果。
用处:在for中使用
for(i=0,j=10;i<j;i++,j--)......
指针
运算符&
scanf("%d",&i);里的&,
作用是获得变量的地址,它的操作数必须是变量,
int i;printf("0x%x\n",&i);用十六进制输出变量i的地址。(但是会有警告)
printf("0x%x\n",&i);等价于printf("%p\n",&i);同样会以十六进制输出。
输出地址采用的是%p;
地址的大小是否与int相同取决于编译器。
&不能对没有地址的东西取地址:&(a+b);&(a++)都是错误的。
一个数组的地址等于该数组第一个单元的地址。
指针
就是保存地址的变量
int* p=&i;(说明p是一个指针,它指向一个int,我们把i的地址交给p,*p是一个int,而p是一个指针)
无论int* p,q;还是int *p,q;都说明了p是一个指针而q是一个int整形变量。
如果希望p、q都是指针需要:int* p,*q;
指针变量
变量的值是内存的地址;
普通变量的值是实际的值;
指针变量的值是具有实际值的变量的地址。
作为参数的指针
void f(int *p);在被调用的时候得到了某个变量的地址,
int i =0;f(&i);在函数的里面可以通过这个指针访问外面的这个i。