20.指针相关知识点1

news2024/11/18 21:47:15

指针相关知识点1

  • 1.定义一个指针变量指向数组
  • 2.指针偏移遍历数组
  • 3.指针偏移的补充
  • 4.指针和数组名的见怪不怪
  • 5.函数、指针、数组的结合

1.定义一个指针变量指向数组

  • 指向数组首元素的地址
    在这里插入图片描述

  • 指向数组起始位置:等于数组名
    在这里插入图片描述

    #include <stdio.h>
    
    int main(){
    	int arr[3] = {1,2,3};
    	int *p;
    	
    	p = &arr[0];//数组的首地址就是首个元素的地址
    	//p = arr;//数组名就是数组的首地址
    	
    	printf("首元素:%d\n",*p);  
    }
    

2.指针偏移遍历数组

  • 指针增量和数组的关系
    在这里插入图片描述

    #include <stdio.h>
    
    int main(){
    	int arr[3] = {1,2,3};
    	int *p;
    	
    	p = &arr[0];
    	printf("0元素:%d\n",*p);
    	printf("1元素:%d\n",*(p+1));//P+1:地址偏移了一个类型的字节数
    	printf("1元素:%d\n",*(p+2));    
    }
    
  • 指针的方式来遍历数组

    #include <stdio.h>
    
    int main(){
    	int arr[3] = {1,2,3};
    	int *p;
    	p = arr;
    	for(int i = 0;i<3;i++){
    		printf("%d\n",*(p+i));
    	}
    	
    }
    
  • 指针的方式来打印地址

    #include <stdio.h>
    
    int main(){
    	int arr[3] = {1,2,3};
    	int *p;
    	p = arr;
    	for(int i = 0;i<3;i++){
    		printf("%p\n",(p+i));
    	}
    	
    }
    
  • 通过指针引用数组元素

    • 下表法
    • 指针法
      • 偏移
      • 去内容
    • 两种方式的对比
      在这里插入图片描述

3.指针偏移的补充

  • 再次进行循环记得回到数组首地址

    #include <stdio.h>
    
    int main(){
    	int arr[3] = {1,2,3};
    	int *p;
    	p = arr;
    	for(int i = 0;i<3;i++){
    		printf("%d\n",*p);
    		p++;
    	}
    	
    	p = arr;//再次通过指针变量进行遍历输出
    			//记得重新让指针回到数组的首元素
    	for(int i = 0;i<3;i++){
    		printf("%d\n",*p);
    		p++;
    	}
    		
    }
    

4.指针和数组名的见怪不怪

  • 指针当作数组名,下标访问

    #include <stdio.h>
    
    int main(){
    	int arr[3] = {1,2,3};
    	int *p = arr;
    	printf("数组的首地址:%d\n",*p);//数组的首地址
    	printf("下标访问:%d",p[2]);//下标访问
    }
    
  • 循环遍历下标访问

    #include <stdio.h>
    
    int main(){
    	int arr[3] = {1,2,3};
    	int *p = arr;
    	for(int i = 0;i<3;i++){
    		printf("%d\n",p[i]);
    	}
    }
    
  • 数组名拿来加

    #include <stdio.h>
    
    int main(){
    	int arr[3] = {1,2,3};
    	int *p = arr;
    	for(int i = 0;i<3;i++){
    		//printf("%d\n",*(p+i));
    		printf("%d\n",*(arr+i));
    	}
    }
    
  • 数组名和指针的区别

    #include <stdio.h>
    
    int main(){
    	int arr[3] = {1,2,3};
    	int *p = arr;
    	for(int i = 0;i<3;i++){
    		printf("%d\n",*p++);
    	}
    }
    
  • 注意的点

    1. 指针常量不能++:原因是地址在内存空间已经固定住了

      • 比如说数组
    2. 指针变量可以++:变量→保存的地址是可以改的

    #include <stdio.h>
    
    int main(){
    	int arr[3] = {1,2,3};
    	int *p = arr;
    	printf("sizeof is %d\n",sizeof(arr));//3*4=12
    	printf("sizeof is %d\n",sizeof(p));//操作系统8个字节表示一个地址(操作系统的不同会有变化)
    	printf("sizeof is %d\n",sizeof(int *));//只要是指针都是8个字节(操作系统的不同会有变化)								  	
    }
    

5.函数、指针、数组的结合

#include <stdio.h>

void init(int *arr,int size){
	int i;
	for(i=0;i<size;i++){
		printf("请输入第%i个元素的数据:\n",i+1);
		scanf("%d",&arr[i]);
	}
}
void print(int *arr,int size){
	int i;
	for(i=0;i<size;i++){
		printf("%d ",arr[i]);

	}
}

int main(){
	int arry[5];
	int size = sizeof(arry)/sizeof(arry[0]);
	
	init(arry,size);
	//传递的实际参数
	//数组首地址:数组名,首个元素的地址
    
	print(&arry[0],size);
	return 0;
}

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

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

相关文章

LeetCode 2266. 统计打字方案数

Alice 在给 Bob 用手机打字。数字到字母的 对应 如下图所示。 为了 打出 一个字母&#xff0c;Alice 需要 按 对应字母 i 次&#xff0c;i 是该字母在这个按键上所处的位置。 比方说&#xff0c;为了按出字母 s &#xff0c;Alice 需要按 7 四次。类似的&#xff0c; Alice 需…

Qt --- Qt窗口

一、前言 前面学习的所有代码&#xff0c;都是基于QWidget控件。QWidget更多的是作为别的窗口的一个部分。 Qt中的QMainWindow就是窗口的完全体 Menu Bar菜单栏 Tool Bar Area 工具栏&#xff0c;类似于菜单栏&#xff0c;工具栏本质上就是把菜单中的一些比较常用的选项&…

活动展览棚:灵活多变的展览解决方案—轻空间

在快速变化的市场环境中&#xff0c;活动展览棚作为一种创新的展示空间&#xff0c;正受到越来越多企业和组织的青睐。无论是展览、活动、还是市场推广&#xff0c;活动展览棚都能提供高效、灵活的解决方案&#xff0c;为品牌传播和产品展示带来全新体验。 便捷的搭建与拆卸 活…

C. Cards Partition 【Codeforces Round 975 (Div. 2)】

C. Cards Partition 思路&#xff1a; 可以O(n)直接判断&#xff0c;牌组从大到小依次遍历即可。 不要用二分答案&#xff0c;因为答案不一定是单调的 代码: #include <bits/stdc.h> #define endl \n #define int long long #define pb push_back #define pii pair<…

Angular与Vue的全方位对比分析

一、框架概述 Angular Angular是由Google开发和维护的一款开源JavaScript框架。它采用TypeScript编写&#xff0c;具有一套完整的开发工具和规范。Angular遵循MVC&#xff08;Model - View - Controller&#xff09;或更确切地说是MVVM&#xff08;Model - View - ViewModel&a…

【Python】数据可视化之分布图

分布图主要用来展示某些现象或数据在地理空间、时间或其他维度上的分布情况。它可以清晰地反映出数据的空间位置、数量、密度等特征&#xff0c;帮助人们更好地理解数据的内在规律和相互关系。 目录 单变量分布 变量关系组图 双变量关系 核密度估计 山脊分布图 单变量分布…

超全面的线程编程实战指南

第一部分&#xff1a;线程基本概念 一、线程简介 线程是操作系统能够进行运算调度的最小单位&#xff0c;它是一个进程内的独立控制流。线程之间共享同一进程的资源&#xff0c;如内存空间和其他系统资源。 二、线程的优势 效率高&#xff1a;由于线程共享相同的地址空间&a…

用Python+flask+mysql等开发的Excel数据资产落地工具

话不多说 1)Excel文件上传,列表预览 2)选中要导入结构及数据的Excel文件 约束说明: 2.1)Excel文件的第一行约定为表头名称 2.2)系统自动识别字段列名及数据类型,目前不支持合并表头 3)Excel建表导入数据成功后,可在表源列表中预览查看 4)对数据表源可进行透视图设计管理,可对…

Vue-Bag-Admin 采用漂亮的 Naive UI 构建的开源中后台系统,基于 Vue3 / Vite / TypeScript 等最新的前端技术栈

这是一款完成度很高、实用性很强的 admin 前端框架&#xff0c;颜值不错&#xff0c;推荐给大家。 Vue-Bag-Admin 在官网上也直接称为 Bag-Admin&#xff0c;这是一款专门为企业项目搭建中后台管理平台的前端框架&#xff0c;基于目前最新的前端技术栈 Vue3、Vite、TypeScript…

双十一儿童耳勺哪款好?双十一儿童专用掏耳神器推荐!

近期收到很多后台私信问儿童应该选择哪款耳勺&#xff0c;现在市面上掏耳神器众多&#xff0c;但要选择一个能适合儿童专用的产品要仔细斟酌。 如果挑选到不符合或者劣质的儿童掏耳工具&#xff0c;不仅清洁不干净不说&#xff0c;还会有损害儿童肌肤的风险&#xff01;那么专为…

Llama 3.2 90B刚开源就被Molmo-72B全面击败!

Meta此次发布的Llama 3.2一个新特性是视觉模型&#xff0c;包括11B和90B&#xff0c;作为首批支持视觉任务的Llama模型&#xff0c;但是allenai开源的多模态Molmo-72B&#xff0c;在视觉评测上全面击败Llama 3.2 90B。 两个新发布的开源LLM之间的基准测试比较&#xff1a;Molm…

leetcode163.缺失的区间,模拟

leetcode163.缺失的区间 给定一个排序的整数数组 nums &#xff0c;其中元素的范围在 闭区间 [lower, upper] 当中&#xff0c;返回不包含在数组中的缺失区间。 示例&#xff1a; 输入: nums [0, 1, 3, 50, 75], lower 0 和 upper 99, 输出: [“2”, “4->49”, “51-&…

OpenSource - 开源WAF_SamWaf

文章目录 PreSafeLine VS SamWaf开发初衷软件介绍架构界面主要功能 使用说明下载最新版本快速启动WindowsLinuxDocker 启动访问升级指南自动升级手动升级 在线文档 代码相关代码托管介绍和编译已测试支持的平台测试效果 安全策略问题反馈许可证书贡献代码 Pre Nginx - 集成Mod…

关系模型与关系代数——数据库原理 总结2

2.1 关系模型 关系数据结构 关系模型的数据结构是二维表&#xff0c;亦称为关系。关系数据库是表的集合&#xff0c;即关系的集合。表是一个实体集&#xff0c;一行就是一个实体&#xff0c;它由有关联的若干属性的值所构成。 关系模型的相关概念 列就是数据项 或 字段 或 属…

C++那些你不得不知道的(2)

C那些你不得不知道的&#xff08;2&#xff09; 1、缺省参数在使用的遍历 &#xff08;1&#xff09;以下是实现顺序表的初始化和检查容量空间的方式&#xff1a; void Init(list* ps) {ps->arr NULL;ps->Capacity ps->size 0; }void CheckCapacity(list* ps) {…

量化系统QTYX使用攻略|“自动交易”篇——ETF量化框架,集成“策略回测仓位风控下单”(更新v2.9.2)...

QTYX系统简介 股票量化交易系统QTYX是一个即可以用于学习&#xff0c;也可以用于实战炒股分析的系统。 分享QTYX系统目的是提供给大家一个搭建量化系统的模版&#xff0c;最终帮助大家搭建属于自己的系统。因此我们提供源码&#xff0c;可以根据自己的风格二次开发。 关于QTYX的…

ABAP版本管理

在开发中ABAP管理有查看&#xff0c;生成&#xff0c;比对&#xff0c;远程比对&#xff0c;回滚&#xff0c;删除等等操作。日常中往往会遇到需要回滚到上一版本的代码&#xff0c;但是ABAP不像git代码管理那么专业&#xff0c;但是也是可以回滚代码的。在此记录一下操作过程。…

大模型时代,2024的传统程序员还需要写代码吗?需要学习大模型吗?

一&#xff0e;引言 随着大模型&#xff08;如GPT等&#xff09;的迅猛发展&#xff0c;软件开发领域中我们的开发方式也在悄然发生变化。当然&#xff0c;我作为一名传统的Java后端开发工程师&#xff0c;在职业生涯的初期主要专注于使用多种数据结构以及算法编写业务代码。 …

所有测试人,下半年的新方向(大模型),赢麻了!!!

现在做测试&#xff0c;真的挺累的。 现在测试越来越难做&#xff0c;晋升困难&#xff0c;工资迟迟不涨……公司裁员&#xff0c;测试首当其冲&#xff01;&#xff01; 做测试几年了&#xff0c;还没升职&#xff0c;就先到了“职业天花板”。 想凭工作几年积累的经验&…

面向未来的设计:推动企业架构创新的关键——The Open Group 2024生态系统架构与可持续发展年度大会

在当今快速变化的数字时代&#xff0c;企业的可持续发展和创新能力比以往任何时候都更为重要。The Open Group 2024生态系统架构可持续发展年度大会&#xff0c;为全球技术和数字化转型专业人士提供了一个无与伦比的机会&#xff0c;以探索先进的企业架构与建模解决方案&#x…