C learning_5

news2024/7/6 18:32:40

数组相关问题

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int arr[] = { 1,2,3 };
	//数组如果初始化的话,可以不指定大小,会根据初始化的内容自动确定大小

	/*
	c99标准之前数组的大小不能是变量的
	但是在c99标准之后引入了变长数组的概念
	这时允许数组的大小时变量,但是不可以初始化
	*/
	return 0;
}

C99新增标准

        C99是C语言的一个新标准,于1999年发布。相对于之前的C89标准,C99引入了一些新特性,包括:

1. 布尔类型:C99标准引入了bool类型,可以用true和false来表示布尔值,这是一种非常方便的数据类型,可以简化代码的编写。

2. 复合字面量:C99标准允许使用复合字面量,即同时初始化多个类型不同的值,使用花括号来表示。这种特性可以简化代码的编写,让代码更加紧凑。

3. 变长数组:C99允许使用变长数组,即数组长度可以在运行时动态地分配。这种特性可以提高程序的灵活性,让程序更加适应不同的数据需求。

4. for循环的扩展:C99允许在for循环中声明循环变量,这种特性可以简化代码的编写,提高代码的可读性。

5. 更多的注释方式:C99允许使用//的注释方式,这种注释方式可以在行末添加注释,方便代码的编写和阅读。

总之,C99标准引入了一些新的特性,包括布尔类型、复合字面量、变长数组、for循环的扩展、更多的注释方式等,使C语言编程更加方便、灵活和高效。

两个数的最大值

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int Max(int x, int y)
{
	return x > y ? x : y;
}
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	//求较大值
	int m = Max(a, b);
	printf("%d\n", m);
	return 0;
}

内存

内存是计算机中一种临时数据存储器,它通过电子元件存储数据,可以快速对数据进行读写操作,是计算机系统中至关重要的组成部分之一。

内存可以分为静态内存(SRAM)和动态内存(DRAM)两种类型。静态内存存储器中的数据可以持续保存,但其价格较高,容量较小。而动态内存中的数据需要每隔一定时间进行刷新,否则数据会丢失,但其价格比静态内存低,容量更大。

内存的内部结构是非常复杂的,一般来说,内存由若干个内存芯片构成,其数量和容量决定了整个内存的大小。电脑内存的单位是字节(Byte),1Byte等于8个二进制位(bit)。

内存的速度也是很重要的,一般用内存频率(MHz或MT/s)来表示。高速内存可以提供更高的读写速度,从而使计算机系统更加高效运行。内存的使用方式以及内存容量也决定了计算机的运行效率。操作系统和程序可以在内存中运行,内存过小容易导致计算机变慢或者系统崩溃,

因此,提高内存容量可以让计算机更好地处理更多任务和运行更复杂的程序。

指针

指针是一种变量类型,它存储内存地址,即指向内存中某个具体位置的数字。指针可以指向任何数据类型的变量,包括基本数据类型、数组、结构体等。

指针变量本身也有一个地址,而指向指针变量的指针称为二级指针或多级指针,以此类推。

指针的使用可以分为四种基本操作:定义指针变量、为指针变量赋值、通过指针访问所指向的值和使用指针访问数组元素。

指针的定义需要指定指针所指向的数据类型,即通过“* ”符号指定。

例如,定义一个指向整型变量的指针:

int* p; 

这里的“* ”符号表示p是一个指针变量,指向一个整型变量。

指针的赋值可以通过给指针变量赋值一个内存地址来实现。

例如,将p指向一个整型变量x的地址:

int x = 10; p = &x; 

这里的& 符号表示取地址,即将x的地址赋值给指针变量p。通过指针访问所指向的值可以使用“* ”符号。

例如,通过p指针访问x的值:

int y = *p; 

这里的“* ”符号表示解引用,即获取指针指向的内存地址中存储的数据。

使用指针访问数组元素可以通过指针和下标的组合实现。

例如,定义一个指向整型数组的指针:

```int arr[3] = { 1, 2, 3 }; int* pArr = arr; ```

这里的pArr指向整型数组arr的第一个元素。我们可以使用指针和下标的组合访问数组元素:

int x = *(pArr + 1); // 获取arr[1]的值,即2

这里的“+1”表示增加一个整型变量的大小,即指向arr[1]的地址。

指针的使用需要注意一些安全性问题,例如指针越界访问、未初始化指针的使用等,这些问题可能导致程序出现运行时错误,甚至影响系统的稳定性。因此,程序员在使用指针时需要注意使用方式和注意事项。

 

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int a = 15;
	//a的地址:0x000000155CCFFA74
	//a在内存中的数据显示:0f 00 00 00 
	//a是int类型
	//所以向内存申请了4个字节的空间
	//用来存放15这个数值

	//虽然a占有四个字节,但是当我们&地址的时候\
	拿到的是4个字节中第一个字节的地址

	int* p = &a;
	//p是一个指针变量,指向a的地址
	*p;//获取a变量的值

	//指针变量大小
	/*
		指针变量是用来存放地址的
		32位机器上:地址是32个二进制位,这个地址要存储的话要4个字节
		所以在32位机器上,指针变量的大小是4个字节
		64位机器上:地址是64个二进制位,这个地址要存储的话要8个字节
		所以在64位机器上,指针变量的大小是8个字节
	*/
	printf("%d\n", sizeof(p));
	printf("%d\n", sizeof(int*));
	return 0;
}

结构体

结构体是一种自定义的数据类型,它可以包含多个不同类型的成员,每个成员可以是基本数据类型、指针、数组、结构体等类型。

结构体通常用于将多个相关的数据项打包在一起,以便于传递和处理。结构体的定义由结构体名称和结构体成员组成。

例如:

struct person {    

char name[20];    

int age;    

float height;

};

上述代码定义了一个名为 `person` 的结构体,它包含三个成员,分别是名字、年龄和身高。

我们可以使用结构体变量来存储和访问结构体中的成员。

例如:

struct person p1;

strcpy(p1.name, "John");

p1.age = 20;

p1.height = 1.8;

这个代码片段中,我们定义了一个 `person` 类型的结构体变量 `p1`,并向其中的成员赋值。我们使用 `strcpy` 函数将字符串 "John" 复制到 `p1` 的 `name` 成员中,然后将 `p1` 的 `age` 成员赋值为 20,将 `p1` 的 `height` 成员赋值为 1.8。

我们可以使用点操作符 `.` 来访问结构体中的成员。

例如:

printf("%s is %d years old and %.2f meters tall\n", p1.name, p1.age, p1.height);

这个代码片段中,我们使用 `printf` 函数输出 `p1` 的成员值。我们使用点操作符来分别访问 `p1` 的 `name`、`age` 和 `height` 成员,并将它们作为参数传递给 `printf` 函数。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

struct S
{
	char name[20];
	int age;
	float score;
};

void print1(struct S t)//
{
	printf("%s %d %lf", t.name, t.age, t.score);
}
void print2(struct S* ps)
{
	printf("%s %d %lf", (*ps).name, (*ps).age, (*ps).score);
	printf("%s %d %lf", ps->name, ps->age, ps->score);
}
int main()
{
	struct S s = { "张三",20,88.5f };
	print1(s);
	print2(&s);
	return 0;
}

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

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

相关文章

( “树” 之 BST) 235. 二叉搜索树的最近公共祖先 ——【Leetcode每日一题】

二叉查找树&#xff08;BST&#xff09;&#xff1a;根节点大于等于左子树所有节点&#xff0c;小于等于右子树所有节点。 二叉查找树中序遍历有序。 235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定…

考验大家指针功底的时候到了:请问如何理解 (int*)1 + 1 ?

来&#xff0c;猜猜看&#xff0c;这里的执行结果是什么&#xff1f; 这是今天课上的一道理解题&#xff0c;给大家一点点思考时间。 &#xff08;心里有答案了再往下滑哦&#xff09; 5 4 3 2 1 . 答案是&#xff0c;报warning&#xff01;因为%d不是用来输出指针的哈…

ntlm hash加密方式学习

文章目录 一、ntlm hash二、LM hash加密三 、NTLM Hash 加密 一、ntlm hash 什么是ntlm hash&#xff0c;当windows进行本地用户密码认证时不是以用户输入的明文密码与系统密码直接比较&#xff0c;而是经过某种方式加密之后进行比较。所以windows中的用户密码凭证不是以明文的…

哪个洗脱一体机好用?好用的洗拖一体机推荐

洗地机是一款使用非常方便的清洁工具&#xff0c;通常可以实现吸、拖、洗三个功能&#xff0c;对于各类家庭污渍都有着不错的处理能力&#xff0c;无论是干燥垃圾还是潮湿垃圾一律可以有效清理。不过很多新手朋友在选购洗地机时会因为看不懂参数而频繁踩雷。本文为大家整理了洗…

图像分割(Segmentation)

文章目录 图像分割FCNU-NetSegNetDeepLab图像分割常用数据集 图像分割 图像分割是预测图像中每一个像素所属的类别或者物体。基于深度学习的图像分割算法主要分为两类&#xff1a; 语义分割&#xff08;Semantic Segmentation&#xff09; 为图像中的每个像素分配一个类别。 …

基于Bert的知识库智能问答系统

项目完整地址&#xff1a; 可以先看一下Bert的介绍。 Bert简单介绍 一.系统流程介绍。 知识库是指存储大量有组织、有结构的知识和信息的仓库。这些知识和信息被存储为实体和实体关系的形式&#xff0c;通常用于支持智能问答系统。在一个知识库中&#xff0c;每个句子通常来说…

用Morss获取全文RSS摘要

什么是 Morss &#xff1f; Morss 工具的目标是从互联网上常见的 RSS 摘要中获取全文 RSS 摘要。Morss 能打开来自 RSS的链接&#xff0c;然后从网站下载整篇文章并将其放回 RSS 摘要中&#xff0c;还可以将摘要导出为 RSS/JSON/CSV/HTML。 Morss 需配合其他 RSS 阅读器使用&am…

人工智能AI图像风格迁移(StyleTransfer),基于双层ControlNet(Python3.10)

图像风格迁移&#xff08;Style Transfer&#xff09;是一种计算机视觉技术&#xff0c;旨在将一幅图像的风格应用到另一幅图像上&#xff0c;从而生成一幅新图像&#xff0c;该新图像结合了两幅原始图像的特点&#xff0c;目的是达到一种风格化叠加的效果&#xff0c;本次我们…

神经影像分析的统计学方法

线性模型概述 模型是对现实的一种数学近似&#xff0c;其中给定输入变量集的某个函数旨在重建一个输出变量。以fMRI范式为例&#xff0c;在这个范式中&#xff0c;给受试者呈现面孔和房屋的图像。该模型的目标是利用体素对面孔和房屋反应时的预期时间进程&#xff0c;并产生与…

基于html+css的图片展示20

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Mybatis(十)级联映射与懒加载

一、Mybatis的级联映射 使用Mybatis的级联映射&#xff0c;我们可以轻松的实现一对一、一对多或者多对多关联查询&#xff0c;甚至可以利用级联映射实现懒加载。 所谓的懒加载&#xff0c;就是我们在一个实体对象中关联了其他对象&#xff0c;如果不需要获取被关联的对象&…

什么样的测试才是优秀的测试

什么样的测试才是优秀的测试 优秀的测试应该包括以下要素&#xff1a; 测试代码的可读性和可维护性 代码在项目中及特定源代码中的组织方式 测试所检查的内容 测试的可靠性及可重复性 测试对测试替身的使用 可读的代码才是可维护的代码 代码较差的可读性与缺陷密度密切相…

GB 35114-2017 学习笔记

GB 35114-2017 学习笔记 第四章 公共安全视频监控联网信息安全系统互联结构 公共安全视频监控信息安全系统 公共安全视频监控信息安全系统由四部分组成&#xff1a; 具有安全功能的前端设备 FDWSF(安全前端设备:Front-end Device With Safety Function)具有安全功能的用户终…

Ubuntu18.04环境下安装igH EtherCAT Master

一、安装步骤 下载安装包 EtherCAT安装包&#xff1a;igH EtherCAT安装包&#xff08;目前最新的稳定版&#xff09; 安装依赖包 sudo apt install autoconf automake libtool net-tools解压EtherCAT安装包&#xff0c;进入解压出的文件夹&#xff0c;右键打开终端输入 ./b…

Spring IoC容器、IoC与DI

目录 Spring是什么&#xff1f; 理解容器 什么是IoC(Inversion of Control) 传统的new创建对象的方式中类与类的耦合程度很大。 IoC的优势&#xff1a; Spring IoC容器最核心的功能 什么是DI (Dependency Injection) IoC和DI的区别 Spring是什么&#xff1f; Spr…

145. 二叉树的后序遍历【34】

难度等级&#xff1a;容易 上一篇算法&#xff1a; 102. 二叉树的层序遍历【206】 力扣此题地址&#xff1a; 145. 二叉树的后序遍历 - 力扣&#xff08;Leetcode&#xff09; 1.题目&#xff1a;145. 二叉树的后序遍历 给你二叉树的根节点 root &#xff0c;返回它节点值的 后…

Django DRF - JWT Token认证使用

JWT Token认证使用 jwt官网&#xff1a;https://jwt.io/ 在用户注册或登录后&#xff0c;我们想记录用户的登录状态&#xff0c;或者为用户创建身份认证的凭证。我们不再使用Session认证机制&#xff0c;而使用Json Web Token认证机制。 一. JWT概念 Json web token (JWT),…

JavaScript—javaEE

文章目录 1.关于JavaScript2.引入的方式3.输入输出4.语法4.1变量4.2基本数据类型4.3运算符4.4数组4.5函数4.6对象 5.dom5.1获取元素5.2操作元素5.3表单控件5.4样式&#xff1a;style属性5.5模仿和服务端交互 6.ajax6.1概念6.2作用6.3Ajax代码6.4Ajax发get请求6.5Ajax发post请求…

【文件系统和系统日志分析】

目录 一、inode和block概述block&#xff08;块&#xff09;inode&#xff08;索引节点&#xff09; 二、inode内容三、inode的号码3.1、查看inode号码的方法 四、inode的大小磁盘分区后的结构访问文件的简单流程 五、删除乱码文件六、inode节点耗尽故障处理6.1、模拟inode节点…

【Tomcat】Tomcat的安装配置和在Idea中使用Tomcat:

文章目录 一、获取安装包二、配置环境三、验证是否配置成功【法一】通过运行tomcat文件夹下的bin文件夹中的 startup.bat【法二】快捷键【winr】&#xff0c;输入【cmd】&#xff0c;点击【确定】&#xff0c;输入 startup.bat 四、出现乱码和端口号被占用的解决方案【1】出现乱…