浅谈C语言 static\extern用法 入门系列

#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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值