#include <stdio.h>
static int a = 10; //全局静态变量
//特点:只初始化一次,编译阶段分配内存
//属于内部连接属性,只能在当前文件使用
int c = 30; //全局变量 隐藏关键字
extern int d = 40; //同上,属于外部链接
//告诉编译器 d和c 是外部链接属性变量不报错
int main(void){
static int b = 20; //局部静态变量
//a和b的声明周期相同,程序结束才结束
extern int e = 30;//链接时欺骗编译器
return 0;
}
#include <stdio.h>
//const全局变量存放常量保护区
const int a = 30;//存全局数据
int main(void){
//a = 20;直接修改全局失败
//int *p = &a; //间接修改
//*p = 20;//全局只读不可变
//编译器检查语法通过\运行失败
//-----上面全局/下面局部-----
const int b = 20;//存栈区
//b = 30;直接修改局部失败
int *e = &b;//间接修改ok
//指针间接修改局部常量ok
*e = 40; //可以修改值
//因为局部常量在内存栈区
printf("%d",b); //伪常量
int a[b]; //不可初始化
//常量b不可初始化数组长度
a[0] = 11;
printf("%d",a[0]);
return 0;
}
#include <stdio.h>
int main(void){
char *a = "hello";
printf("%s\t",a);
//指针访问字符串常量
printf("%c\t",a[1]);
//指针访问字符串元素
a[1] = 'a'; //修改字符
//不允许修改字符串常量
//ANSI未定字符串修改标准
//不同编译器不同处理方法
return 0;
}