c语言的零碎小知识~

文章目录

  • 一、c语言的内存单位换算
  • 二、易忘知识:
    •  1、浮点数的除法运算
    • 2、数组命名习惯
    • 3、sizeof操作符
    • 4、++,--操作符的使用
    • 5、三目运算符&&逗号表达式
    • 6、冷门关键字
    • 7、static关键字详解
    • 8、extern关键字
  • 总结


一、c语言内存单位换算

1、1 Byte = 8 Bits;(1字节等于8比特)

2、1 KB = 1024 Bytes;(1千字节=1024字节)

3、1 MB = 1024 KB;(1兆字节=1024千字节)

4、1 GB = 1024 MB;(1千兆字节=1024兆字节)

5、1 TB = 1024  GB。(1太字节=1024千兆字节)

二、易忘知识

1、浮点数的除法运算

int a=7/2;
printf("%d",a);//3

float a=7/2;
printf("%f",a);//3.0000
//除号两端的操作数如果都是整数,执行的是整数除法,
//至少有一个操作上是浮点数执行的才是浮点数的除法
//例

float a=7.0/2;
float b=7/2.0;
printf("%f",a);//3.5
printf("%f",b);//3.5

2、数组命名习惯

int n=10;
int a[n]={0};//这是错误的命名方式,数组a的[]中必须是常量,不能是变量;

const int n=10;
int a[n]={0};//可以加上const在定义的变量前面使其变成常量,即可命名数组;

//正确命名:
int a[10]={0};
int a[]={1,2,3,4,5,6,7,8,9,10};
char ch[11]="hello world";

3、sizeof是一个操作符,不是一个函数!(计算内存所占空间大小)

   (strlen是库函数,只能针对字符串,求字符串长度,计算字符串\0之前的字符个数)

int a[10]={0};
printf("%d\n",sizeof(a));//40
//求数组元素个数
int sz=0;
sz =sizeof(a) / sizeof(a[0]);
printf("%d\n",sz);//10

4、++,--操作符的使用

int a=10;
int b=++a;//前置++,先++,后使用
printf("%d %d\n",a,b);//11  11

int a=10;
int b=a++;//后置++,先使用,后++
//b=a,a=a+1
printf("%d %d\n",a,b);//11  10

int a=10;
int b=--a;//前置--,先--,后使用
//a=a-1,b=a;
printf("%d %d\n",a,b);//9  9

int a=10;
int b=a--;//后置--,先赋值,后--
//b=a,a=a-1;
printf("%d %d\n",a,b);//9  10

int a=10;
printf("%d\n",a--);//先赋值,再--,10
printf("%d\n",a);//9

5、三目运算符&&逗号表达式

//三目运算符:
int a=10;
int b=5;
if(a>5)
{b=3}
else
{b=-3;}

//上面的if判断可用三目运算符替代
b=(a>5 ? 3 : -3);
printf("%d\n",b);//3
//三目运算符解释:先判断a>5是否正确,正确的进入?后面的值,错误的进入:后面的值


//逗号表达式:
int a=3,b=5,c=0;
int d=(a += 2, b=b-c+a, c=a+b);
    //a=3+2=5   b=5-0+5=10  c=10+5=15  
//逗号表达式特点:从左向右依次计算,
//整个表达式的结果是最后一个表达式的结果(此题中则是表示c的值)。
printf("%d\n",d);//15

6、冷门关键字

//auto 自动-自动变量(局部变量都是自动创建,自动销毁,局部变量都是auto修饰)
//例:auto int a=10;  auto经常省略

//enum 枚举类型(自定义类型)和struct很像

//static 静态关键字

//extern 用来申明外部符号

//register 寄存器关键字

//signed 有符号数 (生活中的符号有正有负,例如温度)
//unsigned  无符号数  (生活中的符号只有正没有负,例如年龄)

//typedef 类型重定义(起别名)

//union 联合体/共用体

7、static关键字详解

void test()
{
    int a=3;
    a++;
    printf("%d ",a);
}
int main()
{
    int i=0;
    while(i<10)
    {
        test();
        i++;
    }
    return 0;
}
//此程序最后显示:4 4 4 4 4 4 4 4 4 4
//a的生命周期在且仅在test函数里,第一次循环后,a=4直接被销毁,
//下一次循环test函数的a又从3开始++,依次重复循环。
//static修饰局部变量:
void test()
{
    static int a=3;
    a++;
    printf("%d ",a);
}
int main()
{
    int i=0;
    while(i<10)
    {
        test();
        i++;
    }
    return 0;
}
//此程序最后显示:4 5 6 7 8 9 10 11 12 13
//static关键字可以延长a的生命周期,让他不再局限于test函数,
//test函数第一次从循环结束后,a=4没有被销毁,
//a=4再次进入test函数进行++。
//普通的局部变量创建在栈区,进入栈区就存在,离开栈区就被销毁。
//static修饰的变量是在静态区创建,进入静态区变量存在,
//离开静态区变量也不被销毁,使用的是上一次遗留的数据。
//static改变了存储位置,从栈区->静态区,使变量的生命周期发生变化

8、extern关键字

 extern可以申明另一个.c文件里的变量在自己这个.c文件中使用

但是如果在图中左侧int 前加入 static关键字,即可让右侧.c文件无法通过extern关键字访问。

全局变量是具有外部链接属性的,如果全局变量被static修饰,外部链接属性就变成了内部链接属性,其他源文件就无法通过链接或(extern)访问这个符号了。

extern也可以申明外部函数:

输出结果:8

也可以像上述一样在左侧文件的int前加入static关键字,右侧就无法访问了。


总结

这是博主写的第一个博客,关于一些c语言的简单但却易忘的知识点,那几个关键字更是我们容易忽略的,大家可以好好研究研究。如果有错误,希望大家可以在评论区斧正。如果觉得博主写的还行的,可以加个关注!嘻嘻嘻~

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员X.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值