暑期实习准备:C语言(持续更新)

news2025/1/24 3:31:09

1.局部变量和全局变量
局部变量的作用域是在变量所在的局部范围,全局变量的作用域是整个工程;局部变量的生命周期是作用域内,全局变量的生命周期是整个程序的生命周期,当两者命名冲突时,优先使用的是局部变量。
2.C语言中的四种常量
-字面常量:3.14,1000,hello...
-const修饰的常量:const关键字用于声明一个变量为常量,该变量在初始化之后就不能被修改,在程序编译时确定其值,增加程序的稳定性和安全性,它可以用来修饰基本数据类型的变量,也可以用来修饰指针。
-#define定义的标识符常量:#define MAX 100 ,宏在预处理阶段将名字替换成对应的值。
-枚举常量:在枚举常量中如果未特别表明就是从0开始,只有枚举类型变量才能赋枚举成员常量值。枚举在编译阶段进行替换。参考:C语言丨关键字enum用法详解,看这篇就够了-CSDN博客
3.转义字符
\ddd表示1-3个八进制的数字,\xdd表示2个十六进制数字,\a蜂鸣,\b回退
笔试题:printf("%d\n", strlen("c:\test\628\test.c"));
4.位操作符
&:
按位与;0&1=0,0&0=0,1&1=1
|:按位或;0^1=1,0^0=0,1^1=1
^:按位异或;0^1=0,0^0=1,1^1=1
5.关键字
typedef:类型重命名 typedef unsigned int uint_32;
static:static可以用来修饰局部变量、全局变量、函数;static修饰局部变量改变它的生命周期,让静态局部变量出了作用域仍旧存在,到程序结束,生命周期才结束,static修饰改变的是它的存储持续性,它的作用域仍旧是局部的。static修饰的全局变量和函数只能在本源文件内使用,其它源文件链接不上。

#define ADD(x,y) ((x)+(y));将ADD(2,3)会替换成((2)+(3))
6.指针
内存:为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
7.函数
函数可以嵌套调用但是不能嵌套定义!
函数也可以链式访问,一个函数作为另一个函数的参数printf("%d",printf("%d",printf("%d", 43)));
程序调用自身的编程技巧称为递归。递归的必要条件:存在结束条件并且每次递归接近结束条件。

8.char arr1[] = "abc"; 和 char arr2[3] = {'a','b','c'}; (使用strlen、%s输出会引发未定义行为)

9.关于数组传递的方式 void bubble_sort(int arr[], int sz) 
在 C 中,数组作为函数参数时始终以指针方式传递,并且传递的是数组的首地址。
    •    优点:内存开销小,只需要传递一个地址即可。
    •    缺点:需要通过额外参数(如数组长度)来辅助操作数组。

10.位操作符的使用以及二进制数计算例题:计算Num中有几个bit位为1。

#include <stdio.h>
int main() {
    int num = -1;
    int count = 0; // 计数器

    while (num) {
        count++;
        num = num & (num - 1);
    }

    printf("二进制中1的个数 = %d\n", count);
    return 0;
}

         —10.1二进制数在计算机中如何完成运算?
原码转换为补码:
正数:原码与补码相同,无需转换。
负数:取反:将原码的数值部分(不包括符号位)按位取反;加一:在取反结果上加 1得到补码。补码还原为原码:
正数:补码与原码相同,无需转换。
负数:减一:从补码中减去 1;取反:将减一后的结果按位取反,得到原码的数值部分。

        —10.2 num = num & (num - 1);
num-1会将num最右边的1变为0,再将该位的右边所有0变成1;num&(num-1)就会将该位右边变成1的所有位数又消成0,这样就达到了将num的最右位1消掉的目的,循环就统计出num中1的个数。

11.++操作的返回值是该数值本身;&&逻辑与遇到否情况直接中断;逻辑或||遇到真情况直接中断;

#include <stdio.h>

int main() {
    int i = 0, a = 0, b = 2, c = 3, d = 4;
    i = a++ && ++b && d++;//到a++返回a值判断是0直接结束,后面不进行判断
    i = a++ || ++b || d++;//到a++返回a为1也直接结束,后面不进行判断
    printf("a = %d\n", a);//2
    printf("b = %d\n", b);//2
    printf("c = %d\n", c);//3
    printf("d = %d\n", d);//4

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2281193.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Harmony Next 支持创建分身

应用分身能实现在一个设备上安装多个相同的应用&#xff0c;实现多个账号同时登录使用和运行并且互不影响。主要应用场景有社交账号双开、游戏大小号双开等&#xff0c;无需账号切换&#xff0c;从而省去频繁登录的繁琐。 Harmony Next 很容易就能让 App 支持创建分身。 官方文…

java ,springboot 对接支付宝支付,实现生成付款二维码,退款,查询订单状态等接口

查看文档 支付宝文档地址&#xff1a; 小程序文档 - 支付宝文档中心 使用沙箱环境 沙箱登录地址 登录 - 支付宝 点击查看 才能看钥匙截图写错了。。 问号可以看默认加密方式 点击沙箱帐号 这里我们就具备所有条件了 实战开始 pom文件增加依赖 <dependency> <gro…

深入内核讲明白Android Binder【三】

深入内核讲明白Android Binder【三】 前言一、服务的获取过程内核源码解析1. 客户端获取服务的用户态源码回顾2. 客户端获取服务的内核源码分析2.1 客户端向service_manager发送数据1. binder_ioctl2. binder_ioctl_write_read3. binder_thread_write4. binder_transaction4.1 …

chrome游览器JSON Formatter插件无效问题排查,FastJsonHttpMessageConverter导致Content-Type返回不正确

问题描述 chrome游览器又一款JSON插件叫JSON Formatter&#xff0c;游览器GET请求调用接口时&#xff0c;如果返回的数据是json格式&#xff0c;则会自动格式化展示&#xff0c;类似这样&#xff1a; 但是今天突然发现怎么也格式化不了&#xff0c;打开一个json文件倒是可以格…

canvas基础

今天我们简单的来认识学习一下canvas的基础概念和使用方法。 1. 认识canvas 1.1 什么是canvas 在网页开发中&#xff0c;canvas是html5中的一个元素&#xff0c;用于通过JavaScript绘制图形。它可以用来制作简单的图表、动画和游戏等。 1.2. 使用场景 游戏开发&#xff1a…

OneData体系架构详解

阿里巴巴的 OneData 体系架构方法论&#xff0c;主要分为三个阶段&#xff1a;业务板块、规范定义 和 模型设计。每个阶段的核心目标是确保数据的高效管理、共享与分析能力。 一. 业务板块&#xff08;Business Segment&#xff09; 业务板块是OneData体系架构中的第一步&…

【C++】哈希表的使用

unordered_map/unordered_set 这是C11才新增的两个容器 原本觉得avl树和红黑树效率已经够了。 后来探索和觉得哈希还是有必要加进来的。 JAVA里面是这样取名的&#xff1a; unordered_set unordered_map/set与map/set的功能基本一致&#xff0c;但细节上有所不同&#x…

微信小程序1.1 微信小程序介绍

1.1 微信小程序介绍 内容提要 什么是微信小程序 微信小程序的功能 微信小程序使用场景 微信小程序能取代App吗 微信小程序的发展历程 微信小程序带来的机会

前端Vue2项目使用md编辑器

项目中有一个需求&#xff0c;要在前端给用户展示内容&#xff0c;内容有 AI 生成的&#xff0c;返回来的是 md 格式&#xff0c;所以需要给用户展示 md 格式&#xff0c;并且管理端也可以编辑这个 md 格式的文档。 使用组件库 v-md-editor。 https://code-farmer-i.github.i…

26、正则表达式

目录 一. 匹配字符 .&#xff1a;匹配除换行符外的任意单个字符。 二. 位置锚点 ^&#xff1a;匹配输入字符串的开始位置。 $&#xff1a;匹配输入字符串的结束位置。 \b&#xff1a;匹配单词边界。 \B&#xff1a;匹配非单词边界。 三. 重复限定符 *&#xff1a;匹配…

K8S中Service详解(一)

Service介绍 在Kubernetes中&#xff0c;Service资源解决了Pod IP地址不固定的问题&#xff0c;提供了一种更稳定和可靠的服务访问方式。以下是Service的一些关键特性和工作原理&#xff1a; Service的稳定性&#xff1a;由于Pod可能会因为故障、重启或扩容而获得新的IP地址&a…

【真机调试】前端开发:移动端特殊手机型号有问题,如何在电脑上进行调试?

目录 前言一、怎么设置成开发者模式&#xff1f;二、真机调试基本步骤&#xff1f; &#x1f680;写在最后 前言 edge浏览器 edge://inspect/#devices 谷歌浏览器&#xff08;开tizi&#xff09; chrome://inspect 一、怎么设置成开发者模式&#xff1f; Android 设备 打开设…

初探大数据流式处理

文章目录 初探大数据流式处理批式处理系统特点流式处理系统特点大批次计算微批次计算适用场景 流式计算的应用场景流式大数据的特征流式计算的关键技术流式处理框架的特征三大流式数据处理框架 初探大数据流式处理 大数据处理系统主要分为批式处理和流式处理两类。批式处理将大…

快速搭建深度学习环境(Linux:miniconda+pytorch+jupyter notebook)

本文基于服务器端环境展开&#xff0c;使用的虚拟终端为Xshell。 miniconda miniconda是Anaconda的轻量版&#xff0c;仅包含Conda和Python&#xff0c;如果只做深度学习&#xff0c;可使用miniconda。 [注]&#xff1a;Anaconda、Conda与Miniconda Conda&#xff1a;创建和管…

部门管理查询部门,nginx反向代理,前端如何访问到后端Tomcat 注解@RequestParam

接口开发 增删改通常是不用返回data数据&#xff0c;返回null 列表查询-结果封装&#xff0c;时间 前后端联调测试 nginx反向代理&#xff0c;前端如何访问到后端Tomcat服务器 删除部门

PID 控制算法(二):C 语言实现与应用

在本文中&#xff0c;我们将用 C 语言实现一个简单的 PID 控制器&#xff0c;并通过一个示例来演示如何使用 PID 控制算法来调整系统的状态&#xff08;如温度、速度等&#xff09;。同时&#xff0c;我们也会解释每个控制参数如何影响系统的表现。 什么是 PID 控制器&#xf…

AutoSar架构学习笔记

1.AUTOSAR&#xff08;Automotive Open System Architecture&#xff0c;汽车开放系统架构&#xff09;是一个针对汽车行业的软件架构标准&#xff0c;旨在提升汽车电子系统的模块化、可扩展性、可重用性和互操作性。AUTOSAR的目标是为汽车电子控制单元&#xff08;ECU&#xf…

RTMP|RTSP播放器只解码视频关键帧功能探讨

技术背景 我们在做RTMP|RTSP直播播放器的时候&#xff0c;遇到过这样的技术诉求&#xff0c;在一些特定的应用场景中&#xff0c;可能只需要关键帧的信息&#xff0c;例如视频内容分析系统&#xff0c;可能只对关键帧进行分析&#xff0c;以提取特征、检测对象或场景变化。鉴于…

C#防止重复提交

C#防止重复提交 文章目录 C#防止重复提交前言防止重复提交的思路Web API 防止重复提交代码实现代码讲解使用方法 MVC防止重复提交总结 前言 当用户在前端进行提交数据时&#xff0c;如果网络出现卡顿和前端没有给出响应的话顾客通常都会狂点提交按钮&#xff0c;这样就很容易导…

基于深度学习的视觉检测小项目(十五) 用户的登录界面

用户管理离不开的是消息框&#xff08;QMessageBox&#xff09;和对话框&#xff08;QDialog&#xff09;&#xff0c;比如对话框用于用户名和密码输入&#xff0c;消息框用于提示登录成功、密码错误。 • 基础知识&#xff1a;PySide6&#xff08;PyQT5&#xff09;的常用对话…