当前位置: 首页 > 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;流程和方法是诸多成功企业优秀实践的经验…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...