C语言基础(L1-L5)
来源:互联网 发布:穷 艺术家 知乎 编辑:程序博客网 时间:2024/04/30 15:56
L1:变量
- char =1Byte
- short =2Byte
- int =4Byte
L2:auto static register
- auto 局部变量的默认属性
存储于程序的栈中 - static 修饰的局部变量存储在程序静态区(全局区),变量不在栈上面,只会被初始一次。
static修饰的全局变量作用域只是声明的文件中,不能被别的文件所调用。
static修饰的函数作用域只是声明的文件中,不能被别的文件调用 - register 关键字指明将变量存储于寄存器中
register只是请求寄存器变量,但不一定请求成功
register变量必须是CPU寄存器可以接受的值
不能用&运算符获取register变量的地址
L3:if switch do while for
if
- else 匹配前面最近的if语句
- c语言没有标准的bool值类型 ,if使用bool时 直接放入表达式,不要进行比较 if(b)–>ok if(b==1) –>有可能出错
- 普通变量和0值进行比较时,0值应该出现在符号左边
if(0 == i) …. - float 变量不能直接进行0值比较,需要定义精度
#define E 0.00000001float f =5.0;if((5-E<=f)&&(f<=5+E)) //比较f是否==5{ //statement 1;}else{ //statement 2;}
switch
- case语句中值只能是整型或字符型
- 不适合范围判断
循环(while for)
- break表示终止循环的执行,跳出块(switch 循环)的执行
- continue表示终止本次循环体,进入下次循环执行
- switch 中能否使用continue –》不能,switch中无循环
- do break配合使用 ,确保函数中只有一个分配资源的地方 和一个释放资源的地方 ,利用do while(0) 确保执行,利用break跳出不符合的情况,跳出后统一释放,保证不会出现内存泄露
int func(int n){ int i = 0; int ret = 0; int* p = (int*)malloc(sizeof(int) * n); do { if( NULL == p ) break; if( n < 0 ) break; for(i=0; i<n; i++) { p[i] = i; printf("%d\n", p[i]); } ret = 1; }while(0); free(p); return
L4:void extern sizeof
- goto 禁用
- void 无
void * 指针作为左值用于“接收”任意类型的指针
void * 指针作为右值赋值给其他指针时需要强制类型转换 - extern
用于声明外部定义的变量和函数
用于告诉编译器用C方式编译
extern "C"{ int f(int a,int b) { return a+b; }}
- sizeof 是编译器的内置指示符 ,不是函数
printf(“%d”,sizeof a);printf("%d",sizeof (a));
L5:const 和volatile
const
1.const 修饰的变量是只读的,不可作为左值,但是可以通过指针修改。不是常量 ,是常量
2.const 修饰指针
const int* p ; //p可变,p指向的内容不可变int const *p ; //p可变,p指向的内容不可变int* const p ; //p不可变,p指向的内容可变const int* const p ; //p和p指向的内容不可变
口诀: 左数右指
当const 出现在*左边时指针指向的数据为常量
当const 出现在*后右边时指针本身为常量
const修饰函数参数表示在函数体内不希望改变参数的值
const修饰函数返回值表示返回值不可改变,多用于返回指针的情形
volatile
- 用于告诉编译器必须每次去内存中去变量值
- 主要修饰可能被多个线程访问的变量
- 可以修饰可能被未知因数改变的变量
0 0
- C语言基础(L1-L5)
- GPS signals (L1, L2, L5)
- 数据结构与算法分析(C语言描述)L1.1
- 关于自动驾驶L1~L5的等级划分,这次认真聊一聊
- c语言基础--编程基础
- C语言基础-基础语法
- C语言基础 上
- c语言基础
- C语言基础
- C语言基础
- C 语言基础
- c语言基础解析
- c语言 指针基础
- 3 C语言基础
- C语言基础
- C语言基础
- C语言基础
- C语言基础1
- textView中输入后即时显示在tableView-即时通信聊天界面
- Eclipse NDK环境搭建
- [C/C++]_[初级]_[把一个图片的数据存入到std::string里,使用_wfopen生成二进制文件]
- DrawerLayout设置左右侧滑菜单为全屏(不是slidemenu的全屏模式!)
- 改变图片的透明度,图片自适应屏幕 5.0 获取颜色的方法,mathlerp移动
- C语言基础(L1-L5)
- 在CentOS 7上部署OpenStack Juno时遇到的问题总结
- python中的实例方法、静态变量,静态方法、类方法、类变量和实例变量
- LeetCode---(67) Add Binary
- [LeetCode][Java] Minimum Path Sum
- java中对文件的处理
- IOS实现推送
- 将文件上传到服务器硬盘
- sqlserver中的top n放到oracle中怎么写