当前位置: 首页 > news >正文

c语言基础知识学习

1. C 语言简介

  • 定义:C 语言是一种过程式编程语言,设计用于系统编程和应用程序开发。
  • 特点:高效、灵活、接近硬件,支持指针和内存操作。

1. 基本语法

  • 程序结构:

    • C 语言程序由函数组成,main 函数是程序的入口点。
    #include <stdio.h>int main() {printf("Hello, World!\n");return 0;
    }
    
    • #include <stdio.h> 是预处理指令,包含标准输入输出库。
    • int main() 是主函数,程序从这里开始执行。
    • printf 用于输出文本到终端。

2. 数据类型

  • 基本数据类型

    • int:整数类型,通常占用 4 字节。
    • float:单精度浮点数,通常占用 4 字节。
    • double:双精度浮点数,通常占用 8 字节。
    • char:字符类型,通常占用 1 字节。
    int a = 10;
    float b = 3.14;
    double c = 2.718281828;
    char d = 'A';
    
  • 修饰符

    • short、long、signed、unsigned 用于修饰基本数据类型的大小和符号。
    unsigned int x = 1000;
    long int y = 100000L;
    

3. 变量

  • 声明与初始化:

    • 变量必须在使用之前声明,并可以在声明时初始化。
    int a = 5;    // 声明并初始化变量 a
    int b;        // 声明变量 b
    b = 10;       // 初始化变量 b
    

4. 运算符

  • 算术运算符

    • +、-、*、/、%,用于基本的数学运算。
    int sum = a + b;
    int product = a * b;
    
  • 关系运算符

    • ==、!=、>、<、>=、<=,用于比较操作。
    if (a > b) {printf("a is greater than b\n");
    }
    
  • 逻辑运算符

    • &&(与)、||(或)、!(非),用于逻辑运算。
    if (a > 0 && b > 0) {printf("Both a and b are positive\n");
    }
    
  • 赋值运算符

    • =、+=、-=、*=、/=,用于赋值操作。
    a += 5; // a = a + 5
    

5. 控制结构

  • 条件语句

    • if、else if、else 用于条件判断。
    if (a > b) {printf("a is greater\n");
    } else if (a < b) {printf("a is smaller\n");
    } else {printf("a and b are equal\n");
    }
    
  • 循环语句

    • for 循环:

      for (int i = 0; i < 5; i++) {printf("%d\n", i);
      }
      
    • while 循环:

      int i = 0;
      while (i < 5) {printf("%d\n", i);i++;
      }
      
    • do-while 循环:

      int i = 0;
      do {printf("%d\n", i);i++;
      } while (i < 5);
      

6. 函数

  • 函数定义与调用

    • 函数用于组织代码,执行特定任务。
    int add(int x, int y) {return x + y;
    }int main() {int result = add(5, 3);printf("Result: %d\n", result);return 0;
    }
    
  • 函数原型

    • 在函数定义之前声明函数,以告知编译器函数的存在。
    int add(int, int);
    

7. 数组

  • 定义与初始化

    • 数组是相同数据类型元素的集合。
    int arr[5] = {1, 2, 3, 4, 5};
    
  • 访问元素

    • 使用索引访问数组元素,索引从 0 开始。
    int first = arr[0]; // 访问第一个元素
    

8. 字符串

  • 定义与操作

    • 字符串是以 null 结尾的字符数组。
    char str[] = "Hello";
    printf("%s\n", str);
    
  • 字符串函数

    • 使用 strlen、strcpy、strcat 和 strcmp 等库函数操作字符串。
    #include <string.h>
    char dest[50];
    strcpy(dest, "Hello");
    strcat(dest, " World");
    

9. 指针

  • 定义与使用

    • 指针存储变量的内存地址。
    int a = 10;
    int *p = &a; // p 指向变量 a 的地址
    
  • 解引用与指针运算

    • 使用 * 操作符访问指针指向的值。
    *p = 20; // 修改 a 的值为 20
    

10. 结构体

  • 定义与使用:

    • 结构体用于定义具有不同数据类型的集合。
    struct Person {char name[50];int age;
    };struct Person p1;
    strcpy(p1.name, "Alice");
    p1.age = 30;
    

11. 文件操作

  • 打开、读写和关闭文件:

    • 使用 fopen、fprintf、fscanf、fclose 操作文件。
    FILE *fp = fopen("file.txt", "w");
    fprintf(fp, "Hello, File!\n");
    fclose(fp);FILE *fp = fopen("file.txt", "r");
    char buffer[100];
    fgets(buffer, 100, fp);
    fclose(fp);
    

12. 动态内存管理

  • 分配和释放内存:

    • 使用 malloc、calloc、realloc 和 free 管理内存。
    int *arr = (int *)malloc(sizeof(int) * 10);
    // 使用 arr
    free(arr);
    

13. 预处理器指令

  • 宏定义

    • 用 #define 定义常量或宏。
    #define PI 3.14159
    
  • 条件编译

    • 使用 #ifdef、#ifndef、#endif 进行条件编译。
    #ifdef DEBUG
    printf("Debug mode\n");
    #endif
    

相关文章:

c语言基础知识学习

1. C 语言简介 定义&#xff1a;C 语言是一种过程式编程语言&#xff0c;设计用于系统编程和应用程序开发。特点&#xff1a;高效、灵活、接近硬件&#xff0c;支持指针和内存操作。 1. 基本语法 程序结构&#xff1a; C 语言程序由函数组成&#xff0c;main 函数是程序的入口…...

Qt/QML学习-Dial

QML学习 Dial例程视频讲解代码 main.qml import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15Window {width: 640height: 480visible: truetitle: qsTr("Hello World")Dial {anchors.fill: parentid: dial// 设置旋钮的范围from: 0to: …...

达梦数据库系列—48.DMHS实现Mysql到DM8的同步

目录 DMHS实现Mysql到DM8的同步 1、准备介质 2、安装 3、准备源端Mysql和目标端DM8 软件安装 数据库创建 打开归档 开启附加日志 创建辅助表 Mysql客户端驱动 Mysql端安装ODBC 检查依赖包 创建连接用户 创建测试表 4、同步配置 修改服务配置 Mysql到Dm单向同步…...

PostgreSQL的启动过程

PostgreSQL的启动过程 PostgreSQL的启动过程中主要做了以下几件事&#xff1a; 初始化数据目录&#xff1a;如果数据目录是第一次使用&#xff0c;PostgreSQL会进行初始化&#xff0c;创建必要的系统表和目录结构。 读取配置文件&#xff1a;PostgreSQL会读取并解析配置文件&…...

ActiveMQ、RabbitMQ、Kafka、RocketMQ的区别简介

目录 1. 基本概述 2. 性能与吞吐量 3. 消息模型与特性 4. 生态系统与社区支持 5. 复杂性与运维成本 6.在优先级队列、延迟队列、死信队列、重试队列、消费模式、广播模式方面的区别 7.在消息回溯、消息堆积持久化、消息追踪、消息过滤方面的区别 8.在多租户、多协议支持…...

7.1 多态案例

一、案例1&#xff1a;计算器类 1.1 普通方式实现 #include <iostream> #include <string> using namespace std;class Calculator { public:int num1;int num2;int result(string oper){if (oper "")return num1 num2;else if (oper "-"…...

革新测试管理:集远程、协同、自动化于一身的统一测试管理平台

一、研发背景 当下汽车电子测试领域随着不断发展&#xff0c;自动化、智能化的软硬件一体测试解决方案已经成为趋势。能够整合各种测试资源、自动化测试流程&#xff0c;并提供数据分析和可视化报告&#xff0c;从而提高测试效率、降低成本&#xff0c;并确保汽车电子系统的可…...

HAProxy的详解

一、介绍 1.1 定义 HAProxy是一个使用C语言编写的自由及开放源代码软件&#xff0c;其提供高可用性、负载均衡&#xff0c;以及基于TCP和HTTP的应用程序代理。 HAProxy特别适用于那些负载特大的web站点&#xff0c;这些站点通常又需要会话保持或七层处理。HAProxy运行在当前…...

网络安全实训第一天(dami靶场搭建,XSS、CSRF、模板、任意文件删除添加、框架、密码爆破漏洞)

1.环境准备&#xff1a;搭建漏洞测试的基础环境 安装完phpstudy之后&#xff0c;开启MySQL和Nginx&#xff0c;将dami文件夹复制到网站的根目录下&#xff0c;最后访问安装phptudy机器的IP地址 第一次登录删除dami根目录下install.lck文件 如果检测环境不正确可以下载php5.3.2…...

4.1 SQL的起源与发展

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…...

android中实现禁掉有线网络

1.首先初始化mINetworkManagementServiceProxy // INetworkManagementService mNwService; Object mINetworkManagementServiceProxy;public void init() {// IBinder b ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE);// mNwService INetworkManagementSe…...

docker-compose安装MongoDB 7.0.12

文章目录 一. Mac1.1 创建目录1.2 docker-compose.yaml默认不开启relSet开启relSet&#xff08;数据同步&#xff09; 1.3 部署1.4 卸载1.5 replSet配置1.5.1 初始化replSet1.5.2 创建超管用户1.5.3 验证用户1.5.4 查看replSet状态 二. Centos72.1 创建目录2.2 docker-compose.…...

Ubuntu下NFS和SSH服务

本篇文章记录Ubuntu下如何对NFS和SSH服务进行配置和开启。 目录 一、NFS服务 二、SSH服务 1、安装SSH服务 2. 启动和检查SSH服务 3. 配置SSH服务 4. 连接到SSH服务 5. 设置防火墙 6. 测试连接 三、结语 一、NFS服务 NFS&#xff08;Network File System&#xff0…...

游戏管理系统

目录 Java程序设计课程设计 游戏管理系统 1系统简介 1.1需求分析 1.2 编程环境与工具 2系统总体设计 2.1 系统的功能模块图。 2.2 各功能模块简介。 3主要业务流程 &#xff08;1&#xff09;用户及管理员登录流程图 &#xff08;2&#xff09;信息添加流程 &#x…...

坐牢第二十七天(聊天室)

基于UDP的网络聊天室 一.项目需求&#xff1a; 1.如果有用户登录&#xff0c;其他用户可以收到这个人的登录信息 2.如果有人发送信息&#xff0c;其他用户可以收到这个人的群聊信息 3.如果有人下线&#xff0c;其他用户可以收到这个人的下线信息 4.服务器可以发送系统信息…...

C++自学笔记33(数据类型总结与变量)

数据类型 类型位范围char1 个字节-128 到 127 或者 0 到 255unsigned char1 个字节0 到 255signed char1 个字节-128 到 127int4 个字节-2147483648 到 2147483647unsigned int4 个字节0 到 4294967295signed int4 个字节-2147483648 到 2147483647short int2 个字节-32768 到…...

游戏引擎phaser.js3的使用之玩家和静态物理组碰撞

玩家和静态物理组都加载好了&#xff0c;那就应该开始操作玩家动态和静态之间的碰撞了 下面是通过点击图片按钮来操作碰撞的 sky.on(pointerdown, function () { console.log(图片被点击了&#xff01;); }) 图片点击后让动态的玩家和静态的物理组碰撞&#xff0c;就可以这…...

springboot整合mybatis以及mybatis-plus 开发

一、springboot整合mybatis 1.注解版 1.1 导入坐标 <dependencies><!--mybatis坐标--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</…...

大语言模型微调框架Unsloth:简化模型微调流程,提升模型性能

Unsloth 将 Llama-3、Mistral、Phi-3 和 Gemma 等大型语言模型的微调速度提高了 2 倍&#xff0c;内存使用量减少了 70%&#xff0c;而且准确性不会降低&#xff01; 特点 通过手动派生所有计算繁重的数学步骤和手写 GPU 内核&#xff0c;unsloth 可以在不更改任何硬件的情况…...

IPD-华为研发之道分析与理解

关于西方众多优秀的管理模式、理论我们学习过&#xff0c;也借鉴以及实践过&#xff0c;拿到《IPD-华为研发之道》通读研习后&#xff0c;正如书中所述&#xff0c;IPD是一套产品开发的模式、理念与方法&#xff0c;IPD思想&#xff0c;流程和方法是诸多成功企业优秀实践的经验…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...