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.函数调用--返回值
函数返回值为指针且指针指向局部变量,如果返回栈内存会发生错误