{ int }//n只作用于改语句块
变长数组中,形参名不可省略
void name(int n,int m int shuzu[n][m]
文件作用域变量也称全局变量
c变量有三
1.外部链接//可作用于其他翻译单元
2.内部链接
3.无链接:有 具块作用域 函数作用域 函数原型作用域
static 关键字:static int dog //dog只属于该文件
存储期:1.静态:程序执行期间一直存在
2.线程:并发程序 多线程 作用到线程结束 _Thread_local 时每个线程具有改变量的私有备份
3.自动:块作用域 块结束 (用关键词 static 可使其具有静态存储期 但是只有改函数可以看见,不过可以通过指针对其使用,查看。
4.动态分配
储存类别说明符 :auto 自动 register 块 static静态 extern 引用式声明 _thread_local typrdef
int tern = 1;//定义式声明,可被其他文件调用 因为这里默认成 extern int tern = 1; 要想只作用有该文件,加一个 static
int main ()
{
extern int tern;//引用式声明
}
外部变量只能声明一次
malloc 接受字节数 找匿名内存 返回首字节的地址 (可被其他函数调用)
int *ptz;
ptz = (int*)molloc(30*xizeof(int));//为30个int类型的数申请空间,ptz指向首字节地址 有ptz[0]引用元素或者*(ptz+i)引用,i为整数
calloc 需要两个参数 ,且把所有位设为0,和malloc区别
int *pz;
pz = (int*)calloc(100,sizeof(long));
exit 结束程序 exit(EXIT_FAILURE);
free 释放内存,接受地址,避免内存泄漏(把内存用完)
int (*pz)[6];
pz = (int(*)[6])malloc(n*6*sizeof(int));//n*6数组为一个二维数组分配内存
typedef const int zip ;//将zip作为int别名 且zip不可更改
const zip q = 8;//const 变量变量声明时必须完成赋初值
const zip q;
q = 9;//错误
const int *pf;//pf指向int类型的const值
int *const pt =&a ;pt 不可以指向别的地方,只能指向a
const int *const pz ==int const *const pt =&a;//指向的值不能改变,也不能指向其他地方
如果指针指向数组 这可以用*(pz+i)引用
volatile int *pz;指向易变位置的指针 volatile 只能用于指针