1.函数的链式访问:把一个函数的返回值作为另外一个函数的参数
printf的返回值是打印在屏幕上的字符个数
//链式访问
printf("%d",printf("%d",printf("%d",43)));
//打印的结果是4321
printf("%d",43) -> 打印43,返回2 -> 原式化简为printf("%d",printf("%d",2))
printf("%d",2) -> 打印2,返回1 -> 原式化简为printf("%d",1)
printf("%d",1) -> 打印1
所以最终打印4321
2.局部变量和全局变量
局部变量:{} 内部定义的 不初始化,默认为随机值
全局变量:{} 外部定义的 不初始化,默认为0
当局部变量与全局变量的名字一样时 ==> 局部优先
int a = 1;
void test (void)
{
//这里的a不是全局变量的a
int a = 2;
a=a+1;
}
int main(int argc, const char * argv[])
{
test();
printf("%d\n",a);//结果是1
return 0;
}
解释结果为1:首先进入主函数,调用test函数,test函数内部的变量a的作用域为test函数大括号
内部,所以当调用完test函数后局部变量a也就消失,所以打印的a是全局变量a=1.
3.浅谈内存
局部变量:局部变量是放在栈区上的。
栈区内存的使用习惯:先使用高地址空间,在使用低地址空间。
4.%和/的组合使用
十进制数n:n%10得到个位,n/10去掉个位。
二进制数k:k%2得到二进制末位,k/2去掉二进制末位。
例如:101(5)
5%2=1 --- 得到末尾为1 5/2=2(10) --- 去掉末位1
2%2=0 --- 得到末尾为0 2/2=1(1) ---去掉末位0
1%2=1 --- 得到末尾为1 1/2=0(0) ---去掉末位1
这样就将101(5)的每一位都取出来了。