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.函数调用--返回值

函数返回值为指针且指针指向局部变量,如果返回栈内存会发生错误