阶段性回顾(3)

news2024/12/24 11:30:20

1. 学习指针必须得了解清楚内存,而内存到底是什么东西呢?内存就是电脑上的存储设备(除了内存之外,还有硬盘,寄存器等等),那内存到底是来干啥的呢?程序运行的时候会载入到内存当中,也会占用一些内存空间,那既然程序会使用内存,那么这个内存到底该怎么去管理它呢?

2. 当一个变量占了多个字节(内存单元)时,对变量取地址的时候取的是最低的地址,取地址取的永远都一个是内存单元的地址,但有些东西它本身也是一个地址,如数组名,字符串常量

3.  指针变量的类型的大小就决定了指针进行解引用操作的时候,一次性访问多少个字节,也就是说在解引用的时候决定了你的“势力范围是多少”,指针类型也决定了指针的步长(也就是说指针+1到底跳过几个字节,如果是字符指针+1,跳过的是一个字节;如果是整型指针+1,跳过四个字节)

4. 指针其实是可以运算的,但我现在还是要把指针的运算给他它总结一下,指针到底可以进行哪些运算呢?
(尤其要注意:地址,指针,内存编号,这三个概念都是完全等价的)
  1. 指针+-整数。
  2.指针-指针。
  3.指针的关系运算(也就是指针比较大小) 

5. 指针-指针这个的前提条件是两个指针要指向同一块空间(比如说同一个数组空间),并且这两个指针的类型肯定要一样,不是随便两个指针都能够进行相减操作,指针与指针相减得到的绝对值是两个指针之间的元素个数,至于正负,高减低肯定是正,这个想想就好了。

6. 在进行指针的关系运算(也就是指针比较大小) 时,允许指向数组元素的指针指向数组最后一个元素后面的那个内存位置的指针比较,但不允许与指向数组最前一个元素前面的那个内存位置的指针比较。

7. 在创建结构体类型时,不能类似于将结构体成员初始化,如int age = 0;不行的,只能int age;因为后面结构体变量初始化的时候就会一一初始化结构体成员。

8. 注意:结构体类型一定是带前缀struct的。

9. 初始化结构体变量与初始化数组一样,都是要带一个{ }的。

10. 结构体指针里面存放的是结构体变量的地址(对结构体变量取地址然后放到结构体指针里面),*(结构体指针)就可以找到结构体变量。

11. 访问结构体成员可以:结构体指针->结构体成员名,结构体变量.结构体成员名。

12. 使用 gets() 时,系统会将最后“敲”的换行符从缓冲区中取出来,然后丢弃,所以缓冲区中不会遗留换行符。这就意味着,如果前面使用过 gets(),而后面又要从键盘给字符变量赋值的话就不需要吸收回车清空缓冲区了,因为缓冲区的回车已经被 gets() 取出来扔掉了。

13. 寄存器与内存无关,是独立的存储空间,它是集成在CPU上面。这个内存是没有关系的,但在汇编代码里面可以使用寄存器。

14. 分解质因数数学步骤(质数与合数是在正整数范围内讨论,负数没有质数与合数这一说法)
  1. 先让num(得是一个合数)除以最小质数2.

  2(1). 如果能够整除,就把商再继续除2(并且这时候说明那个2已经被分解出来)

  2(2). 如果不能够整除,就原数除以下一个大的质数,(并且这时候说明那个2不能被分解出来)

  3.  一般来说,我们都是一开始去除以最小的质数2的,然后一旦除不通,就除以接下来大一点的质数,质数从小到大排列为:2,3,5,7,11........... 

  4,除到商也是质数的时候结束,这时候就已经分解质因数分解完了。

15. sqrt()返回的是double类型

16. ->高于++高于--高于*   (优先级比较)

17. *(解引用操作符)后面但凡跟着一个地址都是可以的,比如说字符串常量也是一个地址:

  

18.  操作符的优先级一定要看清楚,同时,前置++与后置++也是一个大坑,时刻记着这个例子:*p++

一个简单的分解质因数器 

代码:

#include <stdio.h>
#include <math.h>
int is_Div(int num)
{
	int i = 0;
	for (i = 2; i <= sqrt(num); i++)
	{
		if (num % i == 0)
		{
			return 0;//合数
		}
	}
	return 1;//质数
}
int main()
{
	printf("*****分解质因数*****\n");
	while (1)
	{
		int num = 0;
		printf("请输入一个数字(按0退出):");
		scanf("%d", &num);
		if (num == 0)
		{
			printf("退出成功\n");
			break;
		}
		else if (num < 0)
		{
			printf("输入错误,重新输入\n");
		}
		else
		{
			//判断质数
			if (is_Div(num))
			{
				printf("该数为质数,无法分解质因数,请重新输入.\n");
			}
			else
			{
				printf("分解质因数结果为:%d=",num);
				int j = 2;
				while (1)
				{
					if (num % j == 0)
					{
						num /= j;
						printf("%d*",j);
						if (is_Div(num))
						{
							printf("%d\n",num);
							break;
						}
					}
					else
					{
						j++;
					}
				}
			}
		}
	}
	return 0;
}

实现效果:

 一个简单的计算开方数的程序

代码:

#include <stdio.h>
#include <math.h>
int main()
{
	printf("*****计算一个被开方数的开方*****\n");
	int num = 0;
	while (1)
	{
		printf("请输入数字(按0退出):");
		scanf("%d", &num);
		if (num == 0)
		{
			printf("退出成功\n");
			break;
		}
		else if (num < 0)
		{
			printf("该数为负数,输入有误\n");
		}
		else
		{
			if (sqrt(num) == (int)sqrt(num))
			{
				printf("结果为:%d\n",(int)sqrt(num));
			}
			else
			{
				printf("该数不为被开方数\n");
			}
		}
	}
	return 0;
}

实现结果:

 

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

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

相关文章

Fast Report .NET 2023.1.7-2022-最后版本

通过使用 Fast Report .NET&#xff0c;用户可以构建和创建本质上独立的应用程序以及报表。网。换句话说&#xff0c;这意味着 Fast Report .NET 可以作为所有用户的独立报告工具独立使用。它可以包括一个强大的可视化报告&#xff0c;用于创建和修改报告的过程。用户应用程序可…

Selenium Webdriver 实现原理详解-手工用Postman调用webdriver执行UI测试

目录 1. Selenium 概述 2. 术语解释&#xff1a; 3. Selenium WebDriver 实现原理 4. 安装selenium 客户端&#xff0c;浏览器&#xff0c;驱动 4.1 安装selenium client lib 4.2 安装浏览器和浏览器驱动 4.3 例子代码 4.4 省略浏览器驱动的方法 4.5 测试代码与Webdr…

Linux近期补充

Linux近期补充Linux命令的近期补充Linux命令的近期补充 1.本地服务器链接远端服务器 命令 ssh 远端服务器ip 如 ssh 121.5.151.236 会弹出 登录框 自己输入密码即可2.当前位置 pwd3.查看网络设备 ifconfig4.查看服务器内存 free -h可以看到还有2.3G内存可以用 5.查看磁盘…

ES学习1~23(ECMAcript相关介绍+ECMASript 6新特性)

1 ECMAcript相关介绍 1.1 什么是ECMA ECMA(European Computer Manufacturers Association)中文名称为欧洲计算机制造商协会&#xff0c;这个组织的目标是评估、开发和认可电信和计算机标准。1994年后该组织改名为Ecma国际。 1.2 什么是ECMScript ECMAScript是由Ecma国际通过…

外网远程访问本地MySQL数据库【cpolar内网穿透】

作为网站运行必备组件之一的数据库&#xff0c;免不了随时对其进行管理维护。若我们没有在安装数据库的电脑旁&#xff0c;但又需要立即对数据库进行管理时&#xff0c;应该如何处理&#xff1f;这时我们可以使用cpolar对内网进行穿透&#xff0c;远程管理和操作MySQL数据库。现…

三叠云甘特图新亮点,可翻页查看数据啦

表单管理 路径 表单 >> 表单设计 功能简介 1.「甘特视图」新增“翻页”功能&#xff0c;用户可以通过翻页查阅更多的数据。 2. 滑动超过显示区域时显示“标记点”&#xff0c;用户可以通过点击标记点快速定位到相应的数据。 3.「列表视图」条件着色功能,修复“系统字…

Linux进程管理

1.什么是程序&#xff1f;具有执行代码和执行权限的文本文件 2.什么是进程&#xff1f;是已启动的可执行程序的运行实例 3.进程的生命周期&#xff1a;由系统程序fork出来的子程序&#xff0c;具备一定的父资源&#xff0c;直到运行完毕 4.进程有哪些组成部分&#xff1f; …

操作系统真相还原_第3章:实模式下跳转指令补充

文章目录数据类型伪指令ret指令call指令jmp指令标志寄存器flags与条件转移数据类型伪指令 byte&#xff1a;字节 word&#xff1a;字 dword&#xff1a;双字 qword&#xff1a;四字 跳转指令指定目标操作数大小 short&#xff1a;字节 near&#xff1a;字 far&#xff1a;双字…

Linux环境下内存泄露检测

linux下内存泄漏检测工具valgrind 该工具可以检测下列与内存相关的问题 : 未释放内存的使用对释放后内存的读/写对已分配内存块尾部的读/写内存泄露不匹配的使用malloc/new/new[] 和 free/delete/delete[]重复释放内存Memcheck。这是valgrind应用最广泛的工具&#xff0c;一个…

vscode插件(个人正在用的)

插件目录any-ruleAuto Close TagAuto Rename Tagbackground-coverChinese (Simplified) (简体中文) Language Pack for Visual Studio CodeDebugger for JavaError LensESLintExtension Pack for JavaImage previewIntelliCodeIntelliCode API Usage ExamplesLanguage Support …

对耳朵伤害最小的耳机类型有哪些,对耳朵伤害小的骨传导耳机

现在耳机的佩戴方式越来越多样化&#xff0c;完美最常见的入耳式耳机&#xff0c;长时间佩戴会导致耳朵肿胀、不适&#xff0c;如果换成骨传导耳机就不会有这个困扰了&#xff0c;骨传导耳机利用开放式听声音的方式&#xff0c;可以在极大程度上减少对听力的损害&#xff0c;从…

Docsify保姆级教程

官网 Docsify官网地址 docsify.js.org/ 前言 动态生成文档网站的一款热门工具&#xff01;网上很多关于动态生成文档的工具&#xff01;今天我们的主角是Docsify&#xff01; Docsify的优点 无需构建&#xff0c;写完文档直接发布容易使用并且轻量智能的全文搜索丰富的 AP…

很好用的Unity编辑器扩展工具 Odin Inspector教程

Odin Inspector是什么&#xff1f; Odin Inspector是Unity的一个插件&#xff0c;让您可以享受拥有强大&#xff0c;自定义和用户友好编辑器的所有工作流程优势&#xff0c;而无需编写任何自定义编辑器代码。 Odin包含许多功能&#xff0c;例如Static Inspector&#xff0c;Pr…

Mybatis框架(一)初识Mybatis之Mybatis简单使用

本文是本人专栏【Java开发后端系列框架】里的文章&#xff0c;文章根据各框架官网与网上资料加上本人工作经验&#xff0c;进行修改总结发布在这个专栏&#xff0c;主要目的是用于自我提升&#xff0c;不用于获取利益。如果系列文章能到帮到您本人将感到荣幸&#xff0c;如果有…

修改配置文件解决matplotlib中文与正负号乱码问题

步骤如下&#xff1a; 1、 找到配置文件matplotlibrc 不管是啥系统&#xff0c;都可以通过以下方式查找matplotlibrc所在的文件夹&#xff08;可以在终端或者编译器中运行以下代码&#xff09; import matplotlib# 查找字体路径 print(matplotlib.matplotlib_fname())结果&am…

策略模式Strategy

1.意图&#xff1a;定义一系列的算法&#xff0c;把它们一个个封装起来&#xff0c;并且使它们可以相互替换。此模式使得算法可以独立于使用它们的客户而变化。 2.结构 Strategy&#xff08;策略&#xff09;定义所有支持的算法的公共接口。Context使用这个接口来调用某Concre…

小梅哥FPGA时序分析和约束实例演练课程

P1 FPGA基本原理 基本结构 三要素可类比电路板的器件、连线、对外端子 可编程逻辑功能块 触发器用于实现时序逻辑&#xff0c;进位链用于可编程逻辑块间通讯&#xff0c;使用较少。 具体器件的可编程逻辑功能块结构。第5代将四输入查找表升级到六输入查找表 由上面两个图抽象…

Flink系列-3、Flink入门案例

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 大数据系列文章目录 官方网址&#xff1a;https://flink.apache.org/ 学习资料&#xff1a;https://flink-learning.org.cn/ 目录Flink程序模型…

Linux内核中sk_buff结构详解

目录 1.sk_buff结构体 1.1 sk_buff在内核中的结构 1.2 重要的长度len的解析 2. sk_buff数据区 2.1 线性数据区 2.2 非线性数据区 ---------------------------------------------------------------------------------------------------------------------------- 1.s…

内置常量--R

1. R中内置的常量 R中内置的常量有&#xff1a;1. LETTERS&#xff1a; 26个大写英文字母2. letters: 26个小写英文字母3. month.abb: 月份英文前三个字母组成的缩写4. month.name: 月份的英文名字5. pi : 圆周率π