C语言程序设计(18)

113 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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。