6.6
1.指针续:
先右看再左看 *q[5] (*q)[5] 分辨指针数组与数组指针
p++ ++p等表示的其实是p或p+1的值的副本
int b[2][3]={1,2,3,4,5,6};
int* p2[2] = { b[0],b[1] };//赋b要报错,类型不匹配
int (*p3)[3]=b;
printf("%d\n", p2[1][2]);//3
2.运算符续:
? : 条件运算符 为真返回前项 为负返回后项
int a=10,b=100;
int c=a<b?a:b;//c=10
3.优先级续:
复合运算符后视为整体
int a=1,x=0,y=0;
a += y==x;//a=2
4.输入与输出:
字符输出 putchar() 单个字符输出 与ASCII码对应
printf() d 十进制;o 八进制;x 十六进制;u 无符号十进制;f 浮点数;c 字符;s 字符串;%% 百分号本身
修饰符 %4d 数据宽度; %#x 加前缀0x ; %.2f 小数点后的位数 ;- 左对齐;+ 符号;l 单精度或双精度输出
getcahr() 从键盘读一字符并返回该字符
scanf()
%c会读取空格、转义字符
遇空格、tab、换行、非法输入结束
scanf("%[^\n]%*c", str)读取需要空格的字符串,%*c吸收换行*抑制符表示不赋值
getchar()吸收输入遗留
scanf缓冲区解析:
https://www.cnblogs.com/yhjoker/p/7530837.html
gets()接收字符串 换行为结束标志 最后自动加\0
5.全局变量
目前可理解为:声明在函数外的变量,储存在数据段中
五大内存:栈 堆 数据段 代码段 BBS
6.变量存储类型
auto 局部变量自动缺省,储存在内存条中
register 储存在寄存器中此时无指针概念,编译时也有可能在内存条中
总结:明晰二维数组中a[i]的含义一维数组名;数组指针 指针数组 指针指针;++ *在表达式中感觉从右往左看 优先级模糊