菜鸟自学嵌入式之C语言基础No3
2013-07-03 21:12
183 查看
c基础很薄弱,仅限非计算机专业大学学的那点点基础。以后会每天更新个人的学习笔记。菜鸟的我是这样学下来滴。走过路过的,不许笑话。有缘看见的,欢迎指点。
1.指针常量 (指针的指向不可改)定义 int * const p=&a;2.常量指针 (指针所指向内容作为常量)定义 const int *p1=&a;特点:p1的指向可以变,a的值也可以改变。不可以通过*p1改变a的值【常量指针常量 const int * const p】3.数组指针int a[2][3];int (* pa)[3]=a // 指向数组的指针pa=a //pa地址==a首地址pa+1=a[1]指针数组, 数组指针Int *a[3], int (*a)[3]Int *p = a;a += 1;A - p = (?)4/12函数面向过程,模块化编程(功能)1.变量与函数之间的关系内部变量[又称局部变量 or自动变量]auto 自动变量关键字,默认皆为此类型可省略[被调用时在栈区分配内存,调用结束释放内存]内部变量不做初始化,其值为垃圾数据 在语句块起作用。生命周期与该语句块一致外部变量[全局变量]放在全局区[又称为静态存储区 ]生命周期与程序运营周期一致外部变量多文件共享情况,某文件已经定义 int a;其他文件要引用该全局变量需要声明 extern int a;//注意声明时不可赋值外部变量不做初始化,默认结果为0;静态变量关键字 static 把全局/局部变量放在全局区(静态区),不随函数调用结束释放。[静态内部变量可以重名]定义变量 static int i=0; 只有第一次给i初始化,之后再被调用不再进行初始化操作static 变量如果没有初始化,系统自动初始化为0静态全局变量只限于当前文件使用,不同文件静态全局变量可以重名寄存器变量关键字 register 把高频变量放在寄存器中,运行速度快寄存器变量的地址不可访问2.变量的定义和声明定义:为变量划分内存空间,用数据类型定义。声明:不划分内存,只是使用初始化:给变量赋值3.函数与函数两个函数之间只能外部关系,函数皆是全局的,所以可跨文件使用静态函数 static 只能在当前文件中使用4.函数调用--参数传递传递数组必须传递数组长度 print_arr(int a[],int size) 或者 print_arr(int *p,int size)二维数组传递时要传递行数和列数,同时二维数组列数必须标出,本质是传递一维数组指针和长度数组传递只能按址传递,不可以按值传递二维数组传递时不可以用二维指针接受[c语言对二级指针封装,无法查询二级指针地址]5.函数调用--返回值函数返回值为指针且指针指向局部变量,如果返回栈内存会发生错误
1.指针常量 (指针的指向不可改)定义 int * const p=&a;2.常量指针 (指针所指向内容作为常量)定义 const int *p1=&a;特点:p1的指向可以变,a的值也可以改变。不可以通过*p1改变a的值【常量指针常量 const int * const p】3.数组指针int a[2][3];int (* pa)[3]=a // 指向数组的指针pa=a //pa地址==a首地址pa+1=a[1]指针数组, 数组指针Int *a[3], int (*a)[3]Int *p = a;a += 1;A - p = (?)4/12函数面向过程,模块化编程(功能)1.变量与函数之间的关系内部变量[又称局部变量 or自动变量]auto 自动变量关键字,默认皆为此类型可省略[被调用时在栈区分配内存,调用结束释放内存]内部变量不做初始化,其值为垃圾数据 在语句块起作用。生命周期与该语句块一致外部变量[全局变量]放在全局区[又称为静态存储区 ]生命周期与程序运营周期一致外部变量多文件共享情况,某文件已经定义 int a;其他文件要引用该全局变量需要声明 extern int a;//注意声明时不可赋值外部变量不做初始化,默认结果为0;静态变量关键字 static 把全局/局部变量放在全局区(静态区),不随函数调用结束释放。[静态内部变量可以重名]定义变量 static int i=0; 只有第一次给i初始化,之后再被调用不再进行初始化操作static 变量如果没有初始化,系统自动初始化为0静态全局变量只限于当前文件使用,不同文件静态全局变量可以重名寄存器变量关键字 register 把高频变量放在寄存器中,运行速度快寄存器变量的地址不可访问2.变量的定义和声明定义:为变量划分内存空间,用数据类型定义。声明:不划分内存,只是使用初始化:给变量赋值3.函数与函数两个函数之间只能外部关系,函数皆是全局的,所以可跨文件使用静态函数 static 只能在当前文件中使用4.函数调用--参数传递传递数组必须传递数组长度 print_arr(int a[],int size) 或者 print_arr(int *p,int size)二维数组传递时要传递行数和列数,同时二维数组列数必须标出,本质是传递一维数组指针和长度数组传递只能按址传递,不可以按值传递二维数组传递时不可以用二维指针接受[c语言对二级指针封装,无法查询二级指针地址]5.函数调用--返回值函数返回值为指针且指针指向局部变量,如果返回栈内存会发生错误
相关文章推荐
- 菜鸟自学嵌入式之C语言基础No2
- 菜鸟自学嵌入式之C语言基础No4
- 菜鸟自学嵌入式之C语言基础No5
- 菜鸟自学嵌入式之C语言基础No6 算法分析
- 菜鸟自学嵌入式之C语言基础No1
- 大龄屌丝自学笔记--Java零基础到菜鸟--018
- 坚持#第222天~零基础自学云计算基础语言应用之Shell8~12节
- 菜鸟学Java----Java语言基础
- 坚持#第230天~零基础自学云计算基础语言应用之python第6节
- 嵌入式 c语言基础3
- 黑马程序员 Java自学总结一 Java语言的基础知识
- 嵌入式C语言基础教程一
- 坚持#第217天~零基础自学云计算基础语言应用26~30节
- 大龄屌丝自学笔记--Java零基础到菜鸟--003
- 大龄屌丝自学笔记--Java零基础到菜鸟--038
- 大龄屌丝自学笔记--Java零基础到菜鸟--012
- 坚持#第232天~零基础自学云计算基础语言应用之python第8节
- 坚持#第214天~零基础自学云计算基础语言应用11~15节
- 嵌入式Linux入门基础知识 ---- 链接脚本、汇编语言、混合编程
- 坚持#第218天~零基础自学云计算基础语言应用31~35节