• 期末复习 C语言再学习


    作者:@小萌新
    专栏:@C语言复习
    作者简介:大二学生 希望能和大家一起进步
    博客简介:本篇博客会介绍一些操作符关键字指针以及结构体
    在这里插入图片描述

    操作符

    本文就不像之前写的博客一样详细介绍每个操作符了

    这里会挑选几个重要的操作符出来讲解并且讲解为什么它们重要以及我目前所知道的它们的用法

    左右移操作符

    我们这里写出下面的代码

    	int a = 1;
    	int b = a << 5;
    
    • 1
    • 2

    那么这个时候的b是等于多少呢?

    可能有些同学这个时候就开始动笔写写画画了是吧

    其实很简单 一眼就能看出来b的结果是32

    在这里插入图片描述
    为什么呢?

    因为我们这里这里使用的左移操作符 它的含义实际上就是将一个数字扩大2的n次方倍(n为操作符右边的数字)

    这样一来我们就很明确了

    这几行的代码的意思就是b等于a乘2的五次方

    那么接下来的问题相信大家也能很好的解决了

    	int a = 1;
    	int b = a << 5;
    	b = b >> 2;
    
    • 1
    • 2
    • 3

    这里实际上就是将b缩小2的2次方倍 也就是32除以4 最后的结果当然是8啦

    到最后我们总结下

    左移操作符实际上就是将操作数扩大2的k次方倍
    右移操作符实际上就是将操作数缩小2的k次方倍

    条件操作符

    语法格式如下

    Exp1?Exp2:Exp3
    
    • 1

    之所以说这个操作符重要是因为如果能够或用的话 它能够大大缩短我们的代码行数

    就像我昨天写的一道使用滑动窗口解决最小长度子数组的问题

    在这里插入图片描述
    最后一行的代码如下

    return ans == INT32_MAX ? 0 : ans;
    
    • 1

    我这里就使用了一个条件表达式来解决 如果这里不使用条件表达式的话就要使用if else来判断了

    代码会很长

    关键字

    这一块没有什么好说的 虽说我们之间讲了register关键字 但是从我敲代码这两个月以来几乎没有碰到过

    也可能是学的程度不够深 这两个月学习以来总结最重要的一个关键字就是typedef

    不管是做项目还是手撕数据结构的时候 使用typedef重新定义一个清晰的变量都可以对我们有很大的帮助

    比如果再链表中 我们通常会写下类似下面的代码

    typedef int Valtype;
    
    • 1

    这段代码的意思是给int取了个别名叫做Valtype

    这样子做有两个好处

    1. 如果我们不想存储int类型的数据了 我们只需要将typedef的int变成char就行
    2. 大大增加代码的可读性 一看到Valtype我们就知道这个是存储数据的类型了

    指针

    越学到后面越觉得指针就是地址这句话概括的很精辟

    通过这个地址(指针)我们可以访问到里面的内容 并可以做出增删查改的操作

    当然因为在32 64位系统下地址大小的不同 我们指针的大小也不尽相同

    在32位系统上为4个字节(32bit)

    在64位系统上为8个字节(64bit)

    结构体

    在学习了C++中的class关键字之后再来看c语言中struct定义结构体

    我们是不是就可以将struct定义的结构体理解成一个全部public的类啊 里面只有成员对象没有成员函数

    我们可以随意访问里面的内容来修改数据

    总结

    在这里插入图片描述

    复习了之前写的博客 写了一些自己新的理解
    由于博主水平有限 错误在所难免 希望大佬们看到可以及时指正
    如果本文帮助到了你 别忘记一键三连啊
    阿尼亚 哇库哇库

  • 相关阅读:
    最小生成树prim算法
    Python3操作文件系列(一):判断文件|目录是否存在三种方式
    观测云产品更新|新增观测云、SLS 联合解决方案;新增 3 个智能巡检配置文档;新增链路错误追踪查看器等
    Programming abstractions in C阅读笔记:p181-p183
    mysql开启慢查询日志及死锁排查
    docker入门加实战—Docker镜像和Dockerfile语法
    C# | AES加解密 - 快速上手
    【图片+代码】:GCC 链接过程中的【重定位】过程分析
    AutoGen 智能应用开发(一)|AutoGen 基础
    放弃webstrom转战vscode
  • 原文地址:https://blog.csdn.net/meihaoshy/article/details/128039698