C语言:使用指针打印数组内容

news2024/11/15 2:14:24

题目:

写一个函数打印arr数组的内容,不使用数组下标,使用指针

arr一维数组

                    

 =========================================================================

                       

思路一:用 for循环 进行循环打印(未写自定义函数)

总体思路:

(一).

定义一维数组arr

float arr[] = { 3.14f, 99.9f, 66.5f, 0.0f };

        

定义指针变量

float* p = arr; -- 把数组名(数组收元素地址)放进指针变量

            

计算数组元素个数

int sz = sizeof(arr) / sizeof(arr[0]);  -- 元素个数

            

(二).

使用 for循环 指针变量 打印数组内容

使用 解引用符号* 获取 指针内容

获取一位后就 调整一次指针,把指针移向下一位

                


                 

第一步:

(1).

定义一维数组arr

float arr[] = { 3.14f, 99.9f, 66.5f, 0.0f };

        

(2).

定义指针变量

float* p = arr; -- 把数组名(数组收元素地址)放进指针变量

            

(3).

计算数组元素个数

int sz = sizeof(arr) / sizeof(arr[0]);  -- 元素个数

                     

实现代码:

#include <stdio.h>
int main()
{
	//定义一维数组:
	float arr[] = { 3.14f,99.9f,66.5f,0.0f };

	//定义指针变量:
	float* p = arr; //把数组名(首地址)放进指针中

	//计算数组元素个数:
	int sz = sizeof(arr) / sizeof(arr[0]);//元素个数


	return 0;
}

实现图片:

                 


                 

第二步:

使用 for循环 指针变量 打印数组内容

            

使用 解引用符号* 获取 指针内容

获取一位后就 调整一次指针,把指针移向下一位

                     

实现代码:

#include <stdio.h>
int main()
{
	//定义一维数组:
	float arr[] = { 3.14f,99.9f,66.5f,0.0f };

	//定义指针变量:
	float* p = arr; //把数组名(首地址)放进指针中

	//计算数组元素个数:
	int sz = sizeof(arr) / sizeof(arr[0]);//元素个数

	//使用 for循环 和 指针变量 打印数组内容:
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		//使用 解引用符号* 获取指针内容
		printf("%f ", *p);
		//获取一位后就调整一次指针,把指针移向下一位
		p++;
	}

	return 0;
}

实现图片:

                    

思路一:最终代码和实现效果(未写自定义函数)

最终代码:

#include <stdio.h>
int main()
{
	//定义一维数组:
	float arr[] = { 3.14f,99.9f,66.5f,0.0f };

	//定义指针变量:
	float* p = arr; //把数组名(首地址)放进指针中

	//计算数组元素个数:
	int sz = sizeof(arr) / sizeof(arr[0]);//元素个数

	//使用 for循环 和 指针变量 打印数组内容:
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		//使用 解引用符号* 获取指针内容
		printf("%f ", *p);
		//获取一位后就调整一次指针,把指针移向下一位
		p++;
	}

	return 0;
}

实现效果:

                    

 =========================================================================

                       

思路二:用 while循环 进行循环打印

总体思路:

(一).

定义一维数组arr

float arr[] = { 3.14f, 99.9f, 66.5f, 0.0f };

        

定义指针变量

float* p = arr; -- 把数组名(数组收元素地址)放进指针变量

            

计算数组元素个数

int sz = sizeof(arr) / sizeof(arr[0]);  -- 元素个数

            

使用指针变量表示元素个数

float* q = arr + sz;

             

(二).

使用 while循环 指针变量 打印数组内容

         

使用 解引用符号* 获取 指针内容

获取一位后就 调整一次指针,把指针移向下一位:

*p++ -- 先执行 *p 获取指针内容,再执行 p++ 调整指针

                


              

第一步:

(1).

定义一维数组arr

float arr[] = { 3.14f, 99.9f, 66.5f, 0.0f };

        

(2).

定义指针变量

float* p = arr; -- 把数组名(数组收元素地址)放进指针变量

            

(3).

计算数组元素个数

int sz = sizeof(arr) / sizeof(arr[0]);  -- 元素个数

            

(4).

使用指针变量表示元素个数

float* q = arr + sz;

                     

实现代码:

#include <stdio.h>
int main()
{
	//定义一维数组:
	float arr[] = { 3.14f,99.9f,66.5f,0.0f };

	//定义指针变量:
	float* p = arr; //把数组名(首地址)放进指针中

	//计算数组元素个数:
	int sz = sizeof(arr) / sizeof(arr[0]);//元素个数

	//使用指针变量表示元素个数:
	float* q = arr + sz;



	return 0;
}

实现图片:

                 


                  

第二步:

使用 while循环 指针变量 打印数组内容

         

使用 解引用符号* 获取 指针内容

获取一位后就 调整一次指针,把指针移向下一位:

*p++ -- 先执行 *p 获取指针内容,再执行 p++ 调整指针

                     

实现代码:

#include <stdio.h>
int main()
{
	//定义一维数组:
	float arr[] = { 3.14f,99.9f,66.5f,0.0f };

	//定义指针变量:
	float* p = arr; //把数组名(首地址)放进指针中

	//计算数组元素个数:
	int sz = sizeof(arr) / sizeof(arr[0]);//元素个数

	//使用指针变量表示元素个数:
	float* q = arr + sz; //此时指针变量在最后一个元素地址

	//使用 while循环 和 指针变量 打印数组内容:
	while (p < q)
	//对比地址大小,只要还小于最后一个元素地址就循环
	{
		printf("%.2f ", *p++);
		//*p++ , 先解引用 ,后再p++
	}

	return 0;
}

实现图片:

                    

思路二:最终代码和实现效果

最终代码:

#include <stdio.h>
int main()
{
	//定义一维数组:
	float arr[] = { 3.14f,99.9f,66.5f,0.0f };

	//定义指针变量:
	float* p = arr; //把数组名(首地址)放进指针中

	//计算数组元素个数:
	int sz = sizeof(arr) / sizeof(arr[0]);//元素个数

	//使用指针变量表示元素个数:
	float* q = arr + sz; //此时指针变量在最后一个元素地址

	//使用 while循环 和 指针变量 打印数组内容:
	while (p < q)
	//对比地址大小,只要还小于最后一个元素地址就循环
	{
		printf("%.2f ", *p++);
		//*p++ , 先解引用 ,后再p++
	}

	return 0;
}

实现效果:

                     

 =========================================================================

                       

思路三:自定义函数用 while循环 进行循环打印

总体思路:

(一).

自定义函数print:

         

函数参数:

float* p -- 数组首元素地址

int sz -- 数组元素个数

              

使用指针变量表示元素个数

float* q = p + sz;

          

使用 while循环 指针变量 打印数组内容

使用 解引用符号* 获取 指针内容

获取一位后就 调整一次指针,把指针移向下一位:

*p++ -- 先执行 *p 获取指针内容,再执行 p++ 调整指针

            

(二).

主函数

             

定义一维数组arr

float arr[] = { 3.14f, 99.9f, 66.5f, 0.0f };

        

定义指针变量

float* p = arr; -- 把数组名(数组收元素地址)放进指针变量

            

计算数组元素个数

int sz = sizeof(arr) / sizeof(arr[0]);  -- 元素个数

          

调用自定义函数

print(p, sz);

                


              

第一步:

自定义函数print:

         

(1).

函数参数:

float* p -- 数组首元素地址

int sz -- 数组元素个数

              

(2).

使用指针变量表示元素个数

float* q = p + sz;

          

(3).

使用 while循环 指针变量 打印数组内容

使用 解引用符号* 获取 指针内容

获取一位后就 调整一次指针,把指针移向下一位:

*p++ -- 先执行 *p 获取指针内容,再执行 p++ 调整指针

                     

实现代码:

#include <stdio.h>

//自定义函数print:
void print(float* p, int sz)
{
	//使用指针变量表示元素个数:
	float* q = p + sz; //此时指针变量在最后一个元素地址

	//使用 while循环 和 指针变量 打印数组内容:
	while (p < q)
		//对比地址大小,只要还小于最后一个元素地址就循环
	{
		printf("%.2f ", *p++);
		//*p++ , 先解引用 ,后再p++
	}
}

int main()
{

	return 0;
}

实现图片:

                 


                 

第二步:

主函数

             

(1).

定义一维数组arr

float arr[] = { 3.14f, 99.9f, 66.5f, 0.0f };

        

(2).

定义指针变量

float* p = arr; -- 把数组名(数组收元素地址)放进指针变量

            

(3).

计算数组元素个数

int sz = sizeof(arr) / sizeof(arr[0]);  -- 元素个数

          

(4).

调用自定义函数

print(p, sz);

                     

实现代码:

#include <stdio.h>

//自定义函数print:
void print(float* p, int sz)
{
	//使用指针变量表示元素个数:
	float* q = p + sz; //此时指针变量在最后一个元素地址

	//使用 while循环 和 指针变量 打印数组内容:
	while (p < q)
		//对比地址大小,只要还小于最后一个元素地址就循环
	{
		printf("%.2f ", *p++);
		//*p++ , 先解引用 ,后再p++
	}
}

int main()
{
	//定义一维数组:
	float arr[] = { 3.14f,99.9f,66.5f,0.0f };

	//定义指针变量:
	float* p = arr; //把数组名(首地址)放进指针中

	//计算数组元素个数:
	int sz = sizeof(arr) / sizeof(arr[0]);//元素个数

	//调用自定义函数进行打印数组元素:
	print(p, sz);

	return 0;
}

实现图片:

                    

思路三:最终代码和实现效果

最终代码:

#include <stdio.h>

//自定义函数print:
void print(float* p, int sz)
{
	//使用指针变量表示元素个数:
	float* q = p + sz; //此时指针变量在最后一个元素地址

	//使用 while循环 和 指针变量 打印数组内容:
	while (p < q)
		//对比地址大小,只要还小于最后一个元素地址就循环
	{
		printf("%.2f ", *p++);
		//*p++ , 先解引用 ,后再p++
	}
}

int main()
{
	//定义一维数组:
	float arr[] = { 3.14f,99.9f,66.5f,0.0f };

	//定义指针变量:
	float* p = arr; //把数组名(首地址)放进指针中

	//计算数组元素个数:
	int sz = sizeof(arr) / sizeof(arr[0]);//元素个数

	//调用自定义函数进行打印数组元素:
	print(p, sz);

	return 0;
}

实现效果:

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

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

相关文章

基于Hexo和Butterfly创建个人技术博客,(14) 给博客站点添加Aplayer音乐

Hexo官司网查看 这里 本章目标&#xff1a; 掌握aplayer音乐插件的用法给博客站点添加音乐功能 一、概述 个人比较倾向网站以简洁为主&#xff0c;并不赞成把网站做成花里虎哨的&#xff0c;比如添加鼠标特效或各种动态的元素。但个人站点的随意性比较大&#xff0c;虽没必要做…

【C++】内存管理、new和delete操作类型、operator new和operator delete函数、new和delete的实现原理

文章目录 1.C/C内存管理2.C语言的内存管理方式3.C内存管理方式3.1 new和delete操作内置类型3.2 new和delete操作自定义类型 4.operator new与operator delete函数5.new和delete的实现原理5.1内置类型5.2 自定义类型 1.C/C内存管理 在C/C中&#xff0c;内存管理是程序员负责管理…

2023.6.20-【personal training】:键盘输入整数,求其和与平均数。并对每一次键入都实现自主控制。

代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int a 0; int sum 0; double ave 0; double sum2 0; int qua 0; int tri ; printf("请输入一个整数&#xff1a;"); tri scanf_s("%d", &a); while …

华为OD机试真题 JavaScript 实现【最短木板长度】【2022Q4 100分】,附详细解题思路

一、题目描述 小明有 n 块木板&#xff0c;第 i ( 1 ≤ i ≤ n ) 块木板长度为 ai。 小明买了一块长度为 m 的木料&#xff0c;这块木料可以切割成任意块&#xff0c;拼接到已有的木板上&#xff0c;用来加长木板。 小明想让最短的木板尽量长。 请问小明加长木板后&#xff0c…

2023.6.15钛动科技java实习第一轮技术面试

第一次面试&#xff0c;又是在考六级期间&#xff0c;也缺乏经验和准备。无笔试&#xff0c;问的简历项目比较多&#xff0c;java基础较多&#xff0c;聊了半个小时。这次的面试应该是挂掉的&#xff0c;面试官建议我多背背八股文和面试题哈 线下面试问题&#xff08;无笔试&a…

Redis持久化机制与Redis事务

一、Redis 持久化机制 Redis 是个基于内存的数据库。那服务一旦宕机&#xff0c;内存中数据必将全部丢失。所以丢失数据的恢复对于 Redis 是十分重要的&#xff0c;我们首先想到是可以从数据库中恢复&#xff0c;但是在由 Redis 宕机时&#xff08;说明相关工作正在运行&#…

Python打包,嵌入式方式打包,而且是官方推荐的打包方式-Python嵌入式打包真的不如pyinstaller吗?

嵌入式打包&#xff1a; 解释&#xff1a; 用嵌入式版本的python解释器进行打包程序&#xff0c;python有嵌入式版本&#xff0c;而且这个嵌入式版本的解释器大小很小&#xff0c;可以很好的省磁盘空间&#xff01;&#xff01;&#xff01; 打包步骤&#xff1a; 1、从pyt…

【案例实战】SpringBoot整合Redis的GEO实现查找附近门店功能

像我们平常美团点外卖的时候&#xff0c;都会看到一个商家距离我们多少米。还有类似QQ附近的人&#xff0c;我们能看到附近的人距离我们有多少米。 那么这些业务是怎么做的呢&#xff1f;是如何实现 基于位置的附近服务系统呢。 在去了解基于位置的附近服务之前&#xff0c;我…

RSA算法

什么是RSA算法&#xff1f; 1976年以前&#xff0c;所有的加密方法都是同一种模式&#xff1a; 甲方选择某一种加密规则&#xff0c;对信息进行加密&#xff1b; 乙方使用同一种规则&#xff0c;对信息进行解密。 由于加密和解密使用同样规则&#xff08;简称"密钥"&…

C语言/C++ 之 打飞机游戏

【项目简介】 1、设计思想&#xff1a;本项目主要是为了实现打飞机游戏&#xff0c;主要包括5个函数模块&#xff0c;和1个主函数框架。分别是chu_shi_hua();、you_cao_zuo&#xff1b;、wu_cao_zuo();、show()&#xff1b;、main();等。项目完成过程中主要运用了C/C中的输入输…

蛋黄肉粽子

蛋黄肉粽子 一、蛋黄肉粽子 作为中国的传统美食之一&#xff0c;蛋黄肉粽子是端午节期间必不可少的特色食品。 我在今年的端午节期间品尝了这种美食&#xff0c;不仅让我感受到了它的美味&#xff0c;也让我领略到了它背后的历史和文化底蕴。 一、蛋黄肉粽子 首先&#xff0c;就…

第三方库介绍——nanomsg(高性能通信库)

一、nanomsg介绍 NanoMsg是一个Socket的通讯库&#xff0c;使用C语言编写实现的&#xff0c;这样就可以适用于多种操作系统&#xff0c;而且几乎不需要什么依赖&#xff0c;可扩展并且能易于使用。Nanomsg提供了几种常见的通信模式 &#xff08; 也称为“可扩展性协议” &#…

C++ 第一弹入门基础

目录 目录 1.关键字 2.命名空间 3.标准IO输入输出 4.缺省参数 5.函数重载 6.引用 7.内联函数 1.关键字 c98的关键字一共有63个 在之后用的时候都会再次详细介绍 2.命名空间 2.1什么是命名空间&#xff0c;为什么要有他&#xff1f; 在c中为了避免相同名字的变量&am…

torchvision.utils.save_image()保存tensor显示图片异常问题解决

用torchvision.utils.save_image()保存图片时出现异常 有些像素点会显示为全黑&#xff08;灰度图&#xff09;&#xff0c;如下图所示&#xff0c;第一张和第三张图 刚开始以为是图像数据分布范围的问题&#xff0c;在保存之前输出图像tensor的最大max和最小min值&#xff0c;…

【Python 基础篇】Python 模块与包

文章目录 引言一、模块与包概述二、模块的导入和使用三、包的组织和导入四、实际应用场景五、总结 引言 在Python编程中&#xff0c;模块和包是组织和复用代码的重要工具。随着项目规模的增长&#xff0c;将代码按照功能模块化并组织成包&#xff0c;可以提高代码的可读性、可…

吴恩达ChatGPT《Building Systems with the ChatGPT API》笔记

1. 课程介绍 使用ChatGPT搭建端到端的LLM系统 本课程将演示使用ChatGPT API搭建一个端到端的客户服务辅助系统&#xff0c;其将多个调用链接到语言模型&#xff0c;根据前一个调用的输出来决定使用不同的指令&#xff0c;有时也可以从外部来源查找信息。 课程链接&#xff1a…

设计模式之桥接模式笔记

设计模式之桥接模式笔记 说明Bridge(桥接)目录桥接模式示例类图视频文件接口avi视频文件类rmvb视频文件类抽象的操作系统类windows类mac类测试类 说明 记录下学习设计模式-桥接模式的写法。JDK使用版本为1.8版本。 Bridge(桥接) 意图:将抽象部分与其实现部分分离&#xff0c…

用微分方程描述的连续时间滤波器举例

用微分方程描述的连续时间滤波器举例 在许多应用中&#xff0c;频率选择性滤波器是用线性常系数微分或差分方程描述的线性时不变系统来实现的。这有许多理由&#xff0c;例如很多具有滤波作用的物理系统都是由微分或差分方程表征的。这方面的一个很好的例子就是在后续将研究的汽…

消息中间件相关知识简介

一、消息中间件相关知识 1、概述 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能&#xff0c;成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件&#xff0c;如老牌的ActiveMQ、RabbitMQ&am…

Python 基础(十五):模块

❤️ 博客主页&#xff1a;水滴技术 &#x1f338; 订阅专栏&#xff1a;Python 入门核心技术 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; 文章目录 一、什么是模块二、自定义模块三、引用其它模块3.1、使用 import 引用模块3.2、使用 f…