4_6学习浅谈

  • 1、操作符
  • 2、关键字

1、操作符

单目操作符
++ - - ~ & *

++与- -操作符分为前置与后置关系,看如下代码:

    int a = 10;int b = ++a;printf("%d\n %d", a, b);//看一下a与b的值为多少。

这输入一个前置++问题,代表先进行++操作符的运算,而后进行=操作符的运算。故b=11,a=11.

下面看一个后置++代码:

    int a = 10;int b = a++;printf("a=%d\nb=%d", a, b);

此时++后置,先进行=运算符的运算,而后进行++运算符的运算。故b=10,a=11.

运算符- -同理。

—————————————————————————————
下面介绍~运算符,该运算符代表对变量按位取反。

提到这个运算符就要介绍一下数据在内存中怎么存储:
①数据在内存中以二进制的方式存储
②数据在内存中存储的是本身的补码形式(正数原码 反码 补码相同,这里只介绍负数形式)

下面来看一段代码

    int a = 0;int b = 1;printf("~a=%d\n~b=%d", ~a, ~b);

根据上面数据如何存储来分析这道题:


—————————————————————————————
&与*操作符
放到介绍指针时一起介绍。

2、关键字

sizeof关键字实现:

    printf("%d\n", sizeof(int));printf("%d\n", sizeof(char));printf("%d\n", sizeof(short));printf("%d\n", sizeof(long));printf("%d\n", sizeof(long long));printf("%d\n", sizeof(float));printf("%d\n", sizeof(double));

② struct关键字实现:
struct代表结构体,以人为例,可以细分为一个人的姓名,身高,体重,年龄。

struct Human{char name[20];//记录名字int tall;//记录身高int age;//记录年龄int weight;//记录体重};//以李四举例struct Human lisi = { "李四", 175, 18, 70 };struct Human *p = &lisi;printf("姓名:%s\n身高:%d\n年龄:%d\n体重:%d\n", p->name, p->tall, p->age, p->weight);


通俗来讲,struct就是一个包含着各种类型变量的大数组。

③ typedef关键字实现

struct Human{char name[20];//记录名字int tall;//记录身高int age;//记录年龄int weight;//记录体重};typedef struct Human student;//——————————//以李四举例student lisi = { "李四", 175, 18, 70 };student *p = &lisi;printf("姓名:%s\n身高:%d\n年龄:%d\n体重:%d\n", p->name, p->tall, p->age, p->weight);

相当于给我们创建的结构体变量取个别名为“student”,“student”代表着我们创建的结构体变量。

打印出是和上一个一样的。

④ static关键字的用法
tip1:用来修饰局部变量
tip2:用来修饰全局变量
tip3:用来修饰函数

上次的文章有提到,局部变量与全局变量均存在作用域与生命周期,static用来改变它们的作用域与生命周期,来看一段代码

int sum(int a)
{int c = 0;static int b = 3;c += 1;b += 2;return (a + b + c);
}
int main()
{int i;int a = 2;for (i = 0; i < 5; i++){printf("%d,", sum(a));}

分析: 根据上个文章所提到,变量出了所在的{}范围就会销毁,故不妨假设打印出了八个8,。来看真正结果

和我们所假设的不同,static在里面“作怪”,可推知,static修饰的局部变量的生命周期会被延长至与整个程序的生命周期相同,故出了原作用域{}后并没有被销毁
————————
来看static修饰的全局变量:
全局变量的作用域是整个工程,生命周期同程序相同。

下面是用static修饰后

可以看到无法解析变量n。故可知道static修饰全局变量后,全局变量不再作用于整个工程,而作用于自己所在的文件中。
———————
先看没有修饰函数时

这是一个求和函数,在一个文件中创建与定义,在另一个文件中调用,但当被static修饰后

这个求和函数无法被调用,故函数同全局变量一样,被static修饰后都只能作用于本文件内。

【C语言学习】————操作符、关键字相关推荐

  1. c语言存储类型关键字作用,c语言学习笔记.关键字.存储类型关键字等

    关键字const 1.修饰变量. 修饰的对象为常量,只读. 2.修饰指针. const 也可以和指针变量一起使用,这样可以限制指针变量本身,也可以限制指针指向的数据. const 离变量名近就是用来修 ...

  2. C++语言学习(八)——操作符重载

    C++语言学习(八)--操作符重载 一.操作符重载基础 1.操作符重载的语法 通过operator关键字可以定义特殊的函数,operator本质是通过函数重载操作符. Type operator op ...

  3. mfc实现c语言的注释,C语言学习:标识符、关键字、注释、表达式和语句

    正文共:1526 字 2 图.预计阅读时间: 4 分钟. 文章由源世界原创,转载剽窃必究! 标识符 界说变量时,我们使用了诸如 a.abc.mn123 这样的名字,它们都是程序员自己起的,一般能够表达 ...

  4. C语言学习—联合体Union和关键字Typedef

    C语言学习-联合体Union和关键字Typedef 前言 1 联合体Union 1.1 Union认知 1.2 Union应用 2 关键字typedef 前言 内容主要为联合体Union和关键字Typ ...

  5. C语言学习19:操作符详解

    目录 1.操作符种类 1.1 算术操作符 1.2 移位操作符 1.3 位操作符 1.4 赋值操作符 1.5 单目操作符 1.6 关系操作符 1.7 逻辑操作符 1.8 条件操作符 1.9 逗号表达式 ...

  6. C语言学习及应用笔记之三:C语言const关键字及其使用

    在C语言程序中,const关键字也是经常会用到的一个关键字,那么使用const关键字的目的是什么呢?事实上,在程序中使用const关键字的主要目的就是为了向使用者传递设计者的一些意图. 事实上,无论我 ...

  7. C语言学习及应用笔记之二:C语言static关键字及其使用

    C语言有很多关键字,大多关键字使用起来是很明确的,但有一些关键字却要相对复杂一些.我们这里要说明的static关键字就是如此,它的功能很强大,相应的使用也就更复杂. 一般来说static关键字的常见用 ...

  8. C语言学习之extern关键字

    1.了解extern 1.extern是C语言的一个关键字,可以用来修饰函数与变量 2.当extern修饰一个变量或函数时时,就是在声明这个变量(函数),告诉编译器在外部文件中已经这个变量(函数),要 ...

  9. c语言学习(常见关键字)

    c语言提供的关键字 特点 1,c语言提供的,不能自己创建关键字 2,变量名不能是关键字,下面这种就是错误的写法 int char; 常见的关键字 auto        break        ca ...

  10. C++语言学习(十二)——C++语言常见函数调用约定

    C++语言学习(十二)--C++语言常见函数调用约定 一.C++语言函数调用约定简介 C /C++开发中,程序编译没有问题,但链接的时候报告函数不存在,或程序编译和链接都没有错误,但只要调用库中的函数 ...

最新文章

  1. 用于自动泊车的鸟瞰图的边缘线的语义SLAM系统
  2. LeetCode 709 To Lower Case -- java,python解法
  3. OpenGL coordinate systems坐标系统的实例
  4. Laravel 日期时间处理包 Carbon 的应用
  5. NotifyMyFrontEnd 函数背后的数据缓冲区(一)
  6. 那么多GAN哪个好?谷歌大脑泼来冷水:都和原版差不多 | 论文
  7. 最好用的卸载软件工具(Your Uninstaller! PRO)
  8. 家里的无线网最近总是网速不稳定,一阵一阵的卡,是怎么回事?
  9. 龙芯2F笔记本安装gentoo系统
  10. python mp3转wav_python 录音,WAV转MP3
  11. 陈洁kiki宠粉节狂欢夜观看破千万!四年磨一剑将宠粉做到极致
  12. 吃土豆_nyoj_234(动态规划).java
  13. 网站数据采集器-文章采集工具-关键词文章采集工具
  14. 全家桶靠边站 用Windows自带功能解决3大难题
  15. mysql先过滤后分组_MySQL分组过滤
  16. 【Vulnhub靶场】Earth
  17. 两种把体积很大的Tif转为可以快速加载的MBT(mbtiles)的方法
  18. 4. iconfont 字体图标无法正常渲染显示
  19. PostgreSQL 12 `GRANT` 命令
  20. 正确识别中国电信ChinaNet及纯CN2、半程CN2

热门文章

  1. 纯css写一颗跳动的心
  2. 微信表情包小程序,更新登录接口,增加举牌功能
  3. 【其他笔记】 双屏显示分辨率低下、屏幕闪烁、暗沉等问题。
  4. seo关键词挖掘与筛选技巧
  5. 【BeEF】Ubuntu 20.04安装BeEF
  6. linux下自动更换壁纸软件,适用于Ubuntu 18.04的4款最佳壁纸自动切换软件
  7. 最新触摸精灵开发教程(价值300
  8. 将分类图像转换为ERDAS可识别的专题图像(Continuous to Thematic)
  9. Compilation failed to complete
  10. sigmoid二分类