我的编程语言学习笔记
前言
作为一名编程初学者,我深知学习编程需要不断积累和记录。在这篇博客文章中,我将分享一些我在学习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
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++编程语言过程中记录的一些内容,还有很多其他的知识点和技巧等待我们去学习和探索。编程是一个不断进步和成长的过程,希望大家能够保持学习的热情,不断积累经验,提升自己的编程能力。
如果你有任何问题或者想要分享你自己的学习笔记,请在下方留言,让我们一起交流和进步吧!
欢迎点赞收藏
相关文章:

我的编程语言学习笔记
前言 作为一名编程初学者,我深知学习编程需要不断积累和记录。在这篇博客文章中,我将分享一些我在学习C/C编程语言过程中记录的常用代码、特定函数、复杂概念以及特定功能。希望能与大家一起切磋进步! 常用代码: 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 有图中所示一行信息,表示一个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. 程序顺序规则:2. 监视器锁规则:3. volatile变量规则:4. 传递性:5. start()规则:6. join()规则: 一、happens-before的定义 如果一个操作hap…...

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

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

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

产业园区数字孪生3d可视化全景展示方案
随着数字经济的发展,数字技术给企业发展带来了机遇的同时,也为企业管理带来挑战。比如园区运维,不仅体量大,复杂的运维管理系统,落地难度也较高。那么如何通过数字化手段重塑园区运营,打通园区各业务数据孤…...
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 快乐数
题目描述: 思路:快慢指针 看到循环,我就想起了快慢指针的方法,从题目我们可以看出,我们需要模拟一个过程:不断用当前的数去生成下一个数,生成的规则就是将当前数的各位的平方累加; …...
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(主函数) #include <stdio.h> #include "controlDevice.h" #include "inputCommand.h"#include <pthread.h>struct Devices *pdeviceHead NULL; …...

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

C语言实例_获取文件MD5值
一、MD5介绍 MD5(Message Digest Algorithm 5)是一种常用的哈希函数算法。将任意长度的数据作为输入,并生成一个唯一的、固定长度(通常是128位)的哈希值,称为MD5值。MD5算法以其高度可靠性和广泛应用而闻名…...
Win11环境下 Unity个人版无法激活
网上教程大多都是在win10环境下运行,win11环境下遇到很多没有碰到的问题,故简单做个记录,也方便同样使用win11的朋友解决问题。 Unity2021无法打开 问题描述:下载Unity2021.3.4f1c1版本(LTS)后࿰…...

C++:模拟实现list及迭代器类模板优化方法
文章目录 迭代器模拟实现 本篇模拟实现简单的list和一些其他注意的点 迭代器 如下所示是利用拷贝构造将一个链表中的数据挪动到另外一个链表中,构造两个相同的链表 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…...

工程监测振弦采集仪采集到的数据如何进行分析和处理
工程监测振弦采集仪采集到的数据如何进行分析和处理 振弦采集仪是一个用于测量和记录物体振动的设备。它通过测量物体表面的振动来提取振动信号数据,然后将其转换为数字信号,以便进行分析和处理。在实际应用中,振弦采集仪是广泛应用于机械、建…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...