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

我的编程语言学习笔记

前言

作为一名编程初学者,我深知学习编程需要不断积累和记录。在这篇博客文章中,我将分享一些我在学习C/C++编程语言过程中记录的常用代码、特定函数、复杂概念以及特定功能。希望能与大家一起切磋进步!

 

常用代码:


1. 输入输出操作:


   - 使用`cin`进行标准输入。
   - 使用`cout`进行标准输出。
   - 使用`scanf`进行格式化输入。
   - 使用`printf`进行格式化输出。

2. 控制结构:


   - `if-else`语句:根据条件执行不同的代码块。
   - `for`循环:重复执行特定次数的代码块。
   - `while`循环:当条件为真时,重复执行代码块。
   - `switch`语句:根据不同的值执行不同的代码块。

3.特定函数:


1. `strlen`函数:返回字符串的长度。
2. `strcpy`函数:将一个字符串复制到另一个字符串。
3. `strcmp`函数:比较两个字符串是否相等。
4. `atoi`函数:将字符串转换为整数。
5. `rand`函数:生成随机数。

4.复杂概念:


1. 指针:指向内存地址的变量,可以通过指针来访问和修改内存中的数据。
2. 动态内存分配:使用`new`关键字在运行时分配内存,使用`delete`关键字释放内存。

5. 特定功能:


1. 文件操作:打开、读取和写入文件。
2. 数据结构:如数组、链表、栈和队列等。
3. 排序算法:如冒泡排序、插入排序和快速排序等。

具体参考代码


当学习编程语言时,了解各种函数的具体用法是非常重要的。以下是对前面提到的一些函数的详细阐述和相应的参考实例:

1. `strlen`函数:


   - 作用:返回一个字符串的长度。
   - 用法示例:
     ```c++
     #include <iostream>
     #include <cstring>
     
     int main() {
         char str[] = "Hello World";
         int length = strlen(str);
         std::cout << "字符串长度为:" << length << std::endl;
         return 0;
     }
     ```

2. `strcpy`函数:


   - 作用:将一个字符串复制到另一个字符串。
   - 用法示例:
     ```c++
     #include <iostream>
     #include <cstring>
     
     int main() {
         char source[] = "Hello";
         char destination[20];
         strcpy(destination, source);
         std::cout << "复制后的字符串为:" << destination << std::endl;
         return 0;
     }
     ```

3. `strcmp`函数:


   - 作用:比较两个字符串是否相等。
   - 用法示例:
     ```c++
     #include <iostream>
     #include <cstring>
     
     int main() {
         char str1[] = "Hello";
         char str2[] = "World";
         int result = strcmp(str1, str2);
         if (result == 0) {
             std::cout << "字符串相等" << std::endl;
         } else {
             std::cout << "字符串不相等" << std::endl;
         }
         return 0;
     }
     ```

4. `atoi`函数:


   - 作用:将字符串转换为整数。
   - 用法示例:
     ```c++
     #include <iostream>
     #include <cstdlib>
     
     int main() {
         char str[] = "12345";
         int num = atoi(str);
         std::cout << "转换后的整数为:" << num << std::endl;
         return 0;
     }
     ```

5. `rand`函数:


   - 作用:生成随机数。
   - 用法示例:
     ```c++
     #include <iostream>
     #include <cstdlib>
     #include <ctime>
     
     int main() {
         srand(time(0));  // 设置种子,确保每次运行生成的随机数不同
         int randomNum = rand() % 100;  // 生成0到99之间的随机数
         std::cout << "生成的随机数为:" << randomNum << std::endl;
         return 0;
     }
     ```


 

6. 指针示例:


   ```c++
   #include <iostream>
   
   int main() {
       int num = 10;
       int* ptr = &num;  // 定义指向整数的指针,并将其指向变量num
       
       std::cout << "num的值为:" << num << std::endl;
       std::cout << "通过指针访问num的值:" << *ptr << std::endl;
       
       *ptr = 20;  // 修改指针所指向的变量的值
       std::cout << "修改后的num的值为:" << num << std::endl;
       
       return 0;
   }
   ```

7. 动态内存分配示例:


   ```c++
   #include <iostream>
   
   int main() {
       int size;
       std::cout << "请输入数组的大小:";
       std::cin >> size;
       
       int* dynamicArray = new int[size];  // 动态分配一个整数数组
   
       for (int i = 0; i < size; i++) {
           dynamicArray[i] = i + 1;
       }
   
       std::cout << "数组元素为:";
       for (int i = 0; i < size; i++) {
           std::cout << dynamicArray[i] << " ";
       }
       std::cout << std::endl;
   
       delete[] dynamicArray;  // 释放动态分配的内存
   
       return 0;
   }
   ```

8. 文件操作示例:


   ```c++
   #include <iostream>
   #include <fstream>
   
   int main() {
       std::ofstream file("data.txt");  // 创建一个名为"data.txt"的文件对象
   
       if (file.is_open()) {
           file << "Hello, World!\n";
           file << "This is a sample file.\n";
           file.close();
           std::cout << "文件写入完成." << std::endl;
       } else {
           std::cout << "无法打开文件." << std::endl;
       }
   
       return 0;
   }
   ```

9. 数据结构示例(链表):


   ```c++
   #include <iostream>
   
   struct Node {
       int data;
       Node* next;
   };
   
   int main() {
       Node* head = nullptr;
   
       // 创建链表
       for (int i = 1; i <= 5; i++) {
           Node* newNode = new Node;
           newNode->data = i;
           newNode->next = head;
           head = newNode;
       }
   
       // 遍历链表
       Node* currentNode = head;
       while (currentNode != nullptr) {
           std::cout << currentNode->data << " ";
           currentNode = currentNode->next;
       }
       std::cout << std::endl;
   
       // 释放链表的内存
       currentNode = head;
       while (currentNode != nullptr) {
           Node* temp = currentNode;
           currentNode = currentNode->next;
           delete temp;
       }
   
       return 0;
   }
   ```

10. 排序算法示例(冒泡排序):


   ```c++
   #include <iostream>
   
   void bubbleSort(int arr[], int size) {
       for (int i = 0; i < size - 1; i++) {
           for (int j = 0; j < size - i - 1; j++) {
               if (arr[j] > arr[j + 1]) {
                   // 交换元素
                   int temp = arr[j];
                   arr[j] = arr[j + 1];
                   arr[j + 1] = temp;
               }
           }
       }
   }
   
   int main() {
       int arr[] = {5, 2, 8, 12, 1};
       int size = sizeof(arr) / sizeof(arr[0]);
   
       bubbleSort(arr, size);
   
       std::cout << "排序后的数组为:";
       for (int i = 0; i < size; i++) {
           std::cout << arr[i] << " ";
       }
       std::cout << std::endl;
   
       return 0;
   }
   ```

上述示例代码仅作为参考,具体的使用方法可能会因编程环境或需求而略有不同。学习时建议阅读相关的文档和教程,并进行实践来加深对函数的理解和掌握。

总结

以上仅是我在学习C/C++编程语言过程中记录的一些内容,还有很多其他的知识点和技巧等待我们去学习和探索。编程是一个不断进步和成长的过程,希望大家能够保持学习的热情,不断积累经验,提升自己的编程能力。

如果你有任何问题或者想要分享你自己的学习笔记,请在下方留言,让我们一起交流和进步吧!

欢迎点赞收藏

相关文章:

我的编程语言学习笔记

前言 作为一名编程初学者&#xff0c;我深知学习编程需要不断积累和记录。在这篇博客文章中&#xff0c;我将分享一些我在学习C/C编程语言过程中记录的常用代码、特定函数、复杂概念以及特定功能。希望能与大家一起切磋进步&#xff01; 常用代码&#xff1a; 1. 输入输出操作…...

一个DW的计算

一个DW的计算 1- 题目: 已知一个DW1.1 要求: 从DW中取出指定的位的值1.1.1 分析1.1.2 实现1.1.3 简化实现1.1.4 验证 2- 题目: 已知一个DW2.1 要求: 从DW中的指定的P和S,取出指定的位的值2.1.1 分析2.1.2 实现 1- 题目: 已知一个DW 有图中所示一行信息&#xff0c;表示一个DW(…...

java.net.BindException Address already in use: NET_Bind解决

java.net.BindException Address already in use: NET_Bind 两种解决方法 两种解决方法 (1) kill 占用此端口的线程 查看报错的端口 netstat -ano | findstr 16825tasklist | findstr 1092 如果占用的程序不重要直接kill taskkill /f /pid 16825 (2) 修改启动端口 找一个没…...

JMM内存模型之happens-before阐述

文章目录 一、happens-before的定义二、happens-before的规则1. 程序顺序规则&#xff1a;2. 监视器锁规则&#xff1a;3. volatile变量规则&#xff1a;4. 传递性&#xff1a;5. start()规则&#xff1a;6. join()规则&#xff1a; 一、happens-before的定义 如果一个操作hap…...

大数据课程I2——Kafka的架构

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握Kafka的架构; ⚪ 掌握Kafka的Topic与Partition; 一、Kafka核心概念及操作 1. producer生产者,可以是一个测试线程,也可以是某种技术框架(比如flume)。 2. producer向kafka生…...

vscode如何汉化

首先我们到vscode官网下载 链接如下&#xff1a; Visual Studio Code - Code Editing. Redefined 根据自己需要的版本下载就好 下载并且安装完毕之后 运行vscode 然后按快捷键 CTRLSHIFTX 打开安装扩展界面 搜索简体中文 安装就可以了 谢谢大家观看...

matlab保存图片

仅作为记录&#xff0c;大佬请跳过。 文章目录 用界面中的“另存为”用saveas 用界面中的“另存为” 即可。 参考 感谢大佬博主文章&#xff1a;传送门 用saveas 必须在编辑器中的plot之后用saveas&#xff08;也就是不能在命令行中单独使用——比如在编辑器中plot&#xf…...

产业园区数字孪生3d可视化全景展示方案

随着数字经济的发展&#xff0c;数字技术给企业发展带来了机遇的同时&#xff0c;也为企业管理带来挑战。比如园区运维&#xff0c;不仅体量大&#xff0c;复杂的运维管理系统&#xff0c;落地难度也较高。那么如何通过数字化手段重塑园区运营&#xff0c;打通园区各业务数据孤…...

centos7 jupyter notebook 安装自动补全插件

激活juoyter notebook的安装环境 conda activate prod执行以下命令安装 pip install jupyter_contrib_nbextensions -i https://pypi.tuna.tsinghua.edu.cn/simple jupyter contrib nbextension install --userpip install jupyter_nbextensions_configurator -i https://py…...

【算法——双指针】LeetCode 202 快乐数

题目描述&#xff1a; 思路&#xff1a;快慢指针 看到循环&#xff0c;我就想起了快慢指针的方法&#xff0c;从题目我们可以看出&#xff0c;我们需要模拟一个过程&#xff1a;不断用当前的数去生成下一个数&#xff0c;生成的规则就是将当前数的各位的平方累加&#xff1b; …...

AndroidManifest清单文件中,Activity的screenOrientation属性详解

screenOrientation用于控制Acivity的屏幕方向,参数有16个。 参数值功能自动旋转打开自动旋转关闭unspecified-1让系统决定Activity的方向,由传感器和系统设置共同决定四个方向不旋转landscape0强制为横屏,忽略传感器和系统设置不旋转不旋转portrait1强制为竖屏,忽略传感器和系统…...

Qt+Pyhton实现麒麟V10系统下word文档读写功能

目录 前言1.C调用python1.1 安装Python开发环境1.2 修改Qt工程配置1.3 初始化Python环境1.4 C 调用Python 函数1.5 常用的Python接口 2.python虚拟环境2.1Python虚拟环境简介2.2 virtualenv 安装及使用2.3 在C程序中配置virtualenv 虚拟环境 3.python-docx库的应用4.总结 前言 …...

TCP/IP 下的计算机网络江湖

〇、引言 在当今数字化时代,计算机网络宛如广袤江湖,涵盖着五大门派:物理层、数据链路层、网络层、传输层和应用层。每个门派独具技能,共同构筑着现代网络的框架。物理层宛如江湖基石,将比特流传输;数据链路层如武林传承,组织数据帧传递;网络层则像导航大师,寻找传送路…...

智能家居(4)---火灾报警线程封装

封装火灾报警线程实现智能家居中的火灾报警功能 mainPro.c&#xff08;主函数&#xff09; #include <stdio.h> #include "controlDevice.h" #include "inputCommand.h"#include <pthread.h>struct Devices *pdeviceHead NULL; …...

C#语音播报问题之 无法嵌入互操作类型SpVoiceClass,请改用适用的窗口

C#语音播报问题之 无法嵌入互操作类型SpVoiceClass&#xff0c;请改用适用的窗口 解决办法如下&#xff1a; 只需要将引入的Interop.SpeechLib的属性嵌入互操作类型改为false 改为false 即可解决&#xff01;...

C语言实例_获取文件MD5值

一、MD5介绍 MD5&#xff08;Message Digest Algorithm 5&#xff09;是一种常用的哈希函数算法。将任意长度的数据作为输入&#xff0c;并生成一个唯一的、固定长度&#xff08;通常是128位&#xff09;的哈希值&#xff0c;称为MD5值。MD5算法以其高度可靠性和广泛应用而闻名…...

Win11环境下 Unity个人版无法激活

网上教程大多都是在win10环境下运行&#xff0c;win11环境下遇到很多没有碰到的问题&#xff0c;故简单做个记录&#xff0c;也方便同样使用win11的朋友解决问题。 Unity2021无法打开 问题描述&#xff1a;下载Unity2021.3.4f1c1版本&#xff08;LTS&#xff09;后&#xff0…...

C++:模拟实现list及迭代器类模板优化方法

文章目录 迭代器模拟实现 本篇模拟实现简单的list和一些其他注意的点 迭代器 如下所示是利用拷贝构造将一个链表中的数据挪动到另外一个链表中&#xff0c;构造两个相同的链表 list(const list<T>& lt) {emptyinit();for (auto e : lt){push_back(e);} }void test_…...

k8s整合istio配置gateway入口、配置集群内部服务调用管理

一、 istio gateway使用demo kubectl apply -f - <<EOF apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata:name: ngdemo-gatewaynamespace: ssx spec:selector:istio: ingressgateway # use Istio default gateway implementationservers:- port:numbe…...

工程监测振弦采集仪采集到的数据如何进行分析和处理

工程监测振弦采集仪采集到的数据如何进行分析和处理 振弦采集仪是一个用于测量和记录物体振动的设备。它通过测量物体表面的振动来提取振动信号数据&#xff0c;然后将其转换为数字信号&#xff0c;以便进行分析和处理。在实际应用中&#xff0c;振弦采集仪是广泛应用于机械、建…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...