指针(个人学习笔记黑马学习)

news2024/11/20 9:23:09

1、指针的定义和使用

#include <iostream>
using namespace std;



int main() {

	int a = 10;
	int* p;
	p = &a;
	cout << "a的地址为:" << &a << endl;
	cout << "a的地址为:" << p << endl;

	*p = 1000;
	cout << "a = " << a << endl;
	cout << "*p = " << *p << endl;
	
	system("pause");
	return 0;
}

 


2、指针所占内存空间

#include <iostream>
using namespace std;



int main() {

	int a = 10;
	int* p = &a;

	//在32位操作系统下,指针是占4个字节空间大小,不管是什么数据类型
	//在64位操作系统下,指针是占8个字节空间大小,不管是什么数据类型
	cout << "指针占内存的大小:" << sizeof(int *) << endl;
	cout << "指针占内存的大小:" << sizeof(p) << endl;
	cout << "指针占内存的大小:" << sizeof(char *) << endl;
	cout << "指针占内存的大小:" << sizeof(float *) << endl;
	cout << "指针占内存的大小:" << sizeof(double *) << endl;


	
	system("pause");
	return 0;
}


3、空指针和野指针 

#include <iostream>
using namespace std;



int main() {

	//空指针
	int* p = NULL;

	//野指针  尽量避免野指针
	int* p = (int*)0x1100;
	
	system("pause");
	return 0;
}

4、const修饰指针

#include <iostream>
using namespace std;

int main() {

	//1、const修饰指针  常量指针 
	//指针指向的值不可以改,指针的指向可以改
	int a = 10;
	int b = 10;

	const int* p = &a;
	//*p=20; 错误
	p = &b;//正确

	//2、const修饰常量 指针常量
	//指针的指向不可以改,指针指向的值可以改
	int* const p2 = &a;
	*p2 = 100;//正确
	//p2 = &b;错误

	//3、const修饰指针和常量
	//指针的指向和指针指向的值都不可以改
	const int* const p3 = &a;
	//*p3 = 100;错误
	//p3 = &b;错误
	
	system("pause");
	return 0;
}

5、指针和数组

#include <iostream>
using namespace std;

int main() {

	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

	int* p = arr;
	cout <<"利用指针访问第一个元素:"<< * p << endl;

	p++;
	cout << "利用指针访问第二个元素:" << *p << endl;

	int* p2 = arr;
	for (int i = 0; i < 10; i++)
	{
		cout << *(p2 + i) << endl;
	}
	
	system("pause");
	return 0;
}


 6、指针和函数

#include <iostream>
using namespace std;


void swap(int * p1 ,int * p2) {
	int temp = *p1;
	*p1 = *p2;
	*p2 = temp;
	}

int main() {

	int a = 10;
	int b = 20;
	swap(&a, &b);
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	
	system("pause");
	return 0;
}


7、案例 

案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序例如数组: int arr[10] ={ 4,3,6,9,1,2,10,8,7,5} ;

#include <iostream>
using namespace std;

void bubbleSort(int * arr,int len) {
	for (int i = 0; i < len - 1; i++) {
		for (int j = 0; j < len - i - 1; j++) {
			if (arr[j] > arr[j + 1]) {
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
}

void printfArray(int* arr, int len) {
	for (int i = 0; i < len; i++) {
		cout << arr[i] << endl;
	}
}

int main() {

	int arr[10] = { 4,3,6,9,1,2,10,8,7,5 };
	int len = sizeof(arr) / sizeof(arr[0]);
	bubbleSort(arr,len);

	printfArray(arr, len);

	system("pause");
	return 0;
}

 

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

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

相关文章

CPU和GPU的区别

介绍什么是GPU, 那就要从CPU和GPU的比较不同中能更好更快的学习到什么是GPU CPU和GPU的总体区别 CPU&#xff1a; 叫做中央处理器&#xff08;central processing unit&#xff09; 可以形象的理解为有25%的ALU(运算单元)、有25%的Control(控制单元)、50%的Cache(缓存单元)…

“短视频类”App个人信息收集情况测试报告

近期&#xff0c;中国网络空间安全协会对“短视频类”公众大量使用的部分App收集个人信息情况进行了测试。测试情况及结果如下&#xff1a; 一、测试对象 本次测试选取了19家应用商店⁽⁾累计下载量达到1亿次的“短视频类”App&#xff0c;共计6款&#xff0c;其基本情况如表…

StarRocks 在金融科技行业的存算分离应用实践

小编导读&#xff1a; 自从 2023 年 4 月正式推出 3.0 版本的存算分离功能以来&#xff0c;目前已有包含芒果TV、聚水潭、网易邮箱、浪潮、天道金科等数十家用户完成测试&#xff0c;多家用户也已开始逐步将其应用于实际业务中。目前&#xff0c;StarRocks 存算分离上线的场景…

【少年的救赎——放牛班的春天】

风中飞舞的风筝&#xff0c;请你别停下 池塘之底 这是马修在池塘之底写下的日记 他所有的故事&#xff0c;还有“我们”的 1949年一月十五日&#xff0c;在经历了所有领域的挫折后&#xff0c;马修来到了人生低谷期&#xff0c;“池塘之底”像专为他挑选的一般。那是在一个…

19 NAT穿透|python高级

文章目录 网络通信过程NAT穿透 python高级GIL锁深拷贝与浅拷贝私有化import导入模块工厂模式多继承以及 MRO 顺序烧脑题property属性property装饰器property类属性 魔法属性\_\_doc\_\_\_\_module\_\_ 和 \_\_class\_\_\_\_init\_\_\_\_del\_\_\_\_call\_\_\_\_dict\_\_\_\_str…

Gin 框架入门实战系列(一)

GIN介绍 Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点 对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错 借助框架开发,不仅可以省去很多常用的封装带来的时间,…

8.28~~和学长的谈话

对于大二&#xff0c;我还想问问学长有什么建议&#xff1f; 熟练掌握一到两门开发语言&#xff0c;选好专业的重点学习方向&#xff0c;开始全面了解工程实践方面&#xff0c;10个以上工程开发&#xff0c;可自行规划二年级&#xff0c;着重加强基础技能的学习和提升&#xf…

JMeter性能测试基本过程及示例

jmeter 为性能测试提供了一下特色&#xff1a; jmeter 可以对测试静态资源&#xff08;例如 js、html 等&#xff09;以及动态资源&#xff08;例如 php、jsp、ajax 等等&#xff09;进行性能测试 jmeter 可以挖掘出系统最大能处理的并发用户数 jmeter 提供了一系列各种形式的…

【100天精通python】Day47:python网络编程_Web编程基础

目录 1 网络编程与web编程 1.1 网络编程 1.2 web编程 2 Web开发概述 3 Web开发基础 3.1 HTTP协议 3.2 Web服务器 3.3 前端基础 3.4 静态服务器 3.5 前后端交互的基本原理 4 WSGI接口 4.1 CGI 简介 4.2 WSGI 简介 4.3 定义 WSGI 接口 4.4 运行 WSGI 服务 4.5…

vue3:使用:图片生成二维码并复制

实现在 vue3 中根据 url 生成一个二维码码&#xff0c;且可以复制。 注&#xff09;复制功能 navigator.clipboard.write 只能在安全的localhost 这种安全网络下使用。https中需要添加安全证书&#xff0c;且在域名&#xff08;例&#xff1a;https://www.baidu.com&#xff0…

c#多线程—基础概念到“双色球”项目实现(附知识点目录、代码、视频)

总结&#xff1a;视频中对于多线程讲的非常透彻&#xff0c;从线程基础概念—>.net不同版本出现的线程方法—>多线程常出现问题—>双色球项目实践&#xff0c;每个知识点都有代码实操&#xff0c;受益匪浅。附上学习笔记和实操代码。 视频 目录 一、线程、进程概念及优…

新建Spring Boot项目

使用IDEA 来创建: 文件-新建-项目 填写项目元数据 选择依赖项 此处可以先选 web-spring web 关于这些依赖项&#xff0c;更多可参考&#xff1a; IDEA创建Spring boot项目时各依赖的说明&#xff08;Developer Tools篇&#xff09;[1] 项目结构介绍 展开项目&#xff0c;此时…

redis应用 2:延时队列

我们平时习惯于使用 Rabbitmq 和 Kafka 作为消息队列中间件&#xff0c;来给应用程序之间增加异步消息传递功能。这两个中间件都是专业的消息队列中间件&#xff0c;特性之多超出了大多数人的理解能力。 使用过 Rabbitmq 的同学知道它使用起来有多复杂&#xff0c;发消息之前要…

socket的TCP和UDP样例

【70天稳扎稳打学完JavaEE初阶】 TCP和UDP的区别及相关的不同应用 UDP实现回显功能一、UdpEchoServer服务器二、UdpEchoClient 客户端写一个 翻译服务器&#xff08;继承服务器&#xff09; UDP示例二&#xff1a;展示服务器本地某个目录的下一级子文件列表服务UDP服务器UDP客户…

什么是ChatGPT水印,ChatGPT生成的内容如何不被检测出来,原理什么?

太长不看版 1. 什么是ChatGPT水印&#xff1f; ChatGPT水印是AI以伪随机方式生成的独特tokens序列。该序列用来作为水印&#xff0c;以区分AI生成内容和人类原创内容。 2. 如何规避ChatGPT水印&#xff1f; 一种规避方法是使用其他AI模型改写ChatGPT生成的文本。这会破坏水…

Nat. Mach. Intell 2020 | drugVQA+:准VAQ系统预测药物-蛋白质相互作用

论文标题&#xff1a;Predicting drug–protein interaction using quasi-visual question answering system 论文地址&#xff1a;Predicting drug–protein interaction using quasi-visual question answering system | Nature Machine Intelligence 代码&#xff1a;GitH…

继承AndroidView Model的错误

ViewModelProvider(this)[RegisterViewModel::class.java] 一行简单的代码&#xff0c;总是报这个错误 Caused by: java.lang.NoSuchMethodException: com.xinfa.registerlogin.viewmodel.LoginViewModel. [class android.app.Application] 经过一下午的思索&#xff0c;终于找…

科普:什么是DNS劫持?

DNS劫持又叫做域名劫持&#xff0c;指攻击者利用其他攻击手段&#xff0c;篡改了某个域名的解析结果&#xff0c;使得指向该域名的IP变成了另一个IP&#xff0c;导致对相应网址的访问被劫持到另一个不可达的或者假冒的网址&#xff0c;从而实现非法窃取用户信息或者破坏正常网络…

我们的第一个 Qt 窗口程序

Qt 入门实战教程&#xff08;目录&#xff09; Windows Qt 5.12.10下载与安装 为何使用Qt Creator开发QT 本文介绍用Qt自带的集成开发工具Qt Creator创建Qt默认的窗口程序。 本文不需要你另外安装Visual Studio 2022这样的集成开发环境&#xff0c;也不需要你再在Visual St…

【单片机】有人WH-LTE-7S1 4G cat1 模块连接服务器,教程,记录

文章目录 4G cat1 模块封装引脚名称功能拓扑图串口模块调试WH-LTE-7S1 4G cat1 模块 我买的这个模块内置了电信卡&#xff0c;不用插电话卡就能用&#xff0c;要插也行&#xff0c;在背面。 ⚫ 5-16V 宽电压供电 ⚫ LTE Cat 1&#xff0c;搭载 4G 网络&#xff0c;低时延&…