C语言—指针(1)

 碎碎念:做指针题的时候我仿佛回到了原点,总觉得目的是为了把框架搭建起来,我胡说的哈31

1.利用指针变量将一个数组中的数据反向输出。

/*1.利用指针变量将一个数组中的数据反向输出。*/#include <stdio.h>
#include <time.h>
#include <stdlib.h>int main(void)
{int arr[10] = {0};int n = sizeof(arr) / sizeof(arr[0]);srand(time(NULL));printf("原始数组为: ");int i = 0;for(;i < n;i++){arr[i] = rand() % 100;printf("%5d",arr[i]);}printf("\n");int *p = arr;  //指针指向数组元素printf("反响输出数组元素:");for(int i = n - 1;i >= 0;i--){printf("%5d", *(p + i));}printf("\n");return 0;}


2.利用指针变量计算下标为奇数的数组的和;

/*2.利用指针变量计算下标为奇数的数组的和;*/#include <stdio.h>int main(void)
{int arr[] = {1,2,3,4,5,6,7,8,9};int n = sizeof (arr) / sizeof (arr[0]);printf("数组元素为:");int i = 0,j = 0;for(;i < n;i++){printf("%3d",arr[i]);  // 打印数组元素,%3d指定宽度为3,右对齐}printf("\n");printf("数组下标为:");for(int i =0;i < n;i++){printf("%3d",i);  //打印数组下标,指定宽度为3,右对齐}printf("\n");int sum = 0;int *p;  //声明指针变量pp = arr;  //将数组首地址渎职给指针变量for(int i =0;i < n;i++){if(i % 2 != 0){sum += *(p + i);  //如果下标i为奇数,累加指针p后移i个位置的元素值}}printf("下标为奇数的数组元素之和为: %d\n",sum);return 0;}


3.确认整型,字符型,浮点型指针变量的大小;

are you sure?在Linux中Ubuntu中gcc编译器中指针变量类型大小都是8个字节

然后我又在devc++中编译(?????)

因此我得出了结论(我也不知道对不对),32位都是4个字节指针类型,使用的是64位系统且编译器支持64位指针,所有类型的指针大小都是8字节指针类型(?不是很懂哈哈哈)
4.利用指针变量输出字符数组中的所有字符。

/*4.利用指针变量输出字符数组中的所有字符。*/#include <stdio.h>int main(void)
{char str[] = "Hello,World";int n = sizeof(str) / sizeof(str[0]);char *ptr = str; //定义一个指向字符的指针printf("输出字符数组中的字符串:%s\n",str);   //输出字符串用%sint i = 0;printf("利用指针变量遍历字符数组输出字符:");for(;i < n;i++){printf("%c",*ptr);  //注意这里使用%c是因为str是一个字符数组而非一个字符串ptr++;  //移动指针到下一个字符}printf("\n");return 0;}

这个是让用户自己输入字符串的(此时要注意fgets函数自动添加换行符,所以不需要咱们额外添加)

/*4.利用指针变量输出字符数组中的所有字符。*/#include <stdio.h>int main(void)
{char str[32] = {0};printf("请输入一个字符串:");fgets(str,sizeof(str),stdin);int n = sizeof(str) / sizeof(str[0]);char *ptr = str; //定义一个指向字符的指针printf("通过指针变量输出结果:");int i = 0;for(;i < n;i++){printf("%c",*ptr);  //注意这里使用%c是因为str是一个字符数组而非一个字符串ptr++;  //移动指针到下一个字符}return 0;}


5.利用指针变量删除字符数组中的某个字符。(例如:  hello  删除l ---->  heo)

****这个算法相当经典,可以引申到删除任何数组中的字符,淦,暂时没听太懂就先这样吧。

/*5.利用指针变量删除字符数组中的某个字符。(例如:  hello  删除l ---->  heo)*///此时要注意删除字符不是把它变没而是让后面不删除的字符取覆盖到要删除的字符的位置#include <stdio.h>int main(void)
{char str[64] = {0};printf("请输入一个字符串:");fgets(str,sizeof(str),stdin);  //标准输入,如果把\n也作为遍历里的就不需要做处理换行符char  ch;printf("请输入一个待删除的字符:");ch  = getchar();   //从键盘获取字符,它的返回值会接受字符ch  //sanf("%c",&ch);char *p,*q;  //定义两个指针变量for(p = str,q = str; *p ; p++)  //pq指向字符数组首地址,p指针遍历所输入的字符串,q指针是要删除的字符{if(*p != ch){if(p != q)  //增加一个判断语句,会把效率提高,很多不必要的语句将不再执行*q = *p;  //当p指向元素不等于待删字符且p指向元素不等于q指向元素,将p指向元素赋给q指向的元素,去覆盖q++;  //q继续往下走看是不是待删除字符}}*q = '\0';  //'\0'对应的值就是0,不是字符数组的话不可以是*q = 0;,因为sr[64] = {0}很有可能结束了后面是0,停止不了假设不是一个字符数组  /*q - str*/;  //指针相减,当前元素前第n个元素的地址puts(str);  //输出后结果,fgets函数多一个换行符,,没有处理,所以输出结果会多一个换行return 0;
}

碎碎念:这个运行出来的换行符我暂时还不会删,等俺会了,回来改,或者有没有大佬帮忙纠错哈哈

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

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

相关文章

一文读懂:AWS 网络对等互连(VPC peering)实用操作指南

VPC peering connection-网络对等互连在您的 Atlas VPC 和云提供商的 VPC 之间建立私有连接。该连接将流量与公共网络隔离以提高安全性。本篇文章有VPC peering的操作指南以及价格等信息。如还有疑问请联系我们MongoDB的销售&#xff0c;客户成功经理或解决方案架构师。 1 使用…

2000-2022年各省环境规制数据(原始数据+计算过程+计算结果)

2000-2022年各省环境规制数据&#xff08;原始数据计算过程计算结果&#xff09; 1、时间&#xff1a;2000-2022年 2、范围&#xff1a;30省 3、来源&#xff1a;各省年鉴、国家统计局、统计年鉴 4、指标&#xff1a;年份、省份、工业污染源治理投资完成实际额、工业增加值…

gitlab,从A仓库迁移某个工程到B仓库,保留提交记录

从A仓库&#xff0c;拷贝 git clone --bare ssh://git192.168.30.88:22/framework/platform.git 在B仓库新建工程&#xff0c;注意&#xff1a;一定要去掉默认的生成README文件进入platform.git 文件夹下&#xff0c;推送到B仓库 git push --mirror ssh://git192.168.30.100…

压缩感知常用的重建算法

重建算法的基本概念 在压缩感知&#xff08;Compressed Sensing, CS&#xff09;框架中&#xff0c;重建算法是指将从原始信号中以低于奈奎斯特率采集得到的压缩测量值恢复成完整信号的数学和计算过程。由于信号在采集过程中被压缩&#xff0c;因此重建算法的目标是找到最符合…

文件上传漏洞--Upload-labs--Pass20--数组绕过

一、漏洞原理 漏洞来源&#xff1a;count()函数漏洞。 现自定义一个数组 arr[]&#xff0c;定义arr[0]1,arr[3]2, 此时count(arr)的值为2&#xff0c;则arr[count[arr]]即为arr[2]&#xff0c;但是arr[2]未定义&#xff0c;即为一个空值&#xff0c;若使用count()函数的本意是…

图形系统开发实战课程:进阶篇(上)——6.图形交互操作:拾取

图形开发学院&#xff5c;GraphAnyWhere 课程名称&#xff1a;图形系统开发实战课程&#xff1a;进阶篇(上)课程章节&#xff1a;“图形交互操作:拾取”原文地址&#xff1a;https://www.graphanywhere.com/graph/advanced/2-6.html 第六章 图形交互操作:拾取 \quad 在图形系统…

【网络编程】okhttp深入理解

newCall 实际上是创建了一个 RealCall 有三个参数&#xff1a;OkHttpClient&#xff08;通用配置&#xff0c;超时时间等&#xff09; Request(Http请求所用到的条件&#xff0c;url等) 布尔变量forWebSocket&#xff08;webSocket是一种应用层的交互方式&#xff0c;可双向交互…

2.22使用GPIO子系统编写LED灯驱动,应用程序测试//注册三个按键的中断

使用GPIO子系统编写LED灯驱动 驱动程序 #include <linux/init.h> #include <linux/module.h> #include <linux/of.h> #include <linux/of_gpio.h> #include <linux/gpio.h> #include <linux/timer.h> #include <linux/interrupt.h>…

ubuntu22.04@Jetson Orin Nano之CSI IMX219安装

ubuntu22.04Jetson Orin Nano之CSI IMX219安装 1. 源由2. 安装2.1 硬件安装2.2 软件配置2.3 新增摄像头 3. 效果4. 参考资料 1. 源由 折腾半天时间&#xff0c;捣鼓这个套装摄像头(IMX219)的安装&#xff0c;死活就是没有这个设备。世界总是这么小&#xff0c;看看遇到问题的大…

排序算法之——快速排序

快速排序 1.基本思想2.图示详解——以升序排列为例3.对基本思想和图示的补充说明4.代码实现5.空间、时间复杂度5.1最好情况5.2最坏情况 6.区间按照基准值划分的方法6.1 Hoare法6.2 挖坑法 7.优化措施7.1三数取中法7.1.1三数取中法——核心代码7.1.2优化效果7.1.3补充说明 7.2 递…

docker 容器内服务随容器自动启动

docker 容器内服务随容器自动启动 背景准备工作方案一&#xff0c;直接修改.bashrc文件&#xff08;简单粗暴&#xff09;方案二&#xff0c;编写启动脚本加入.bashrc文件&#xff08;文明一点&#xff09;制作nginx服务自启动镜像测试新镜像&#xff0c;nginx服务随容器自动启…

回显服务器的制作方法

文章目录 客户端和服务器TCP和UDP的特点UDP socket api的使用DatagramSocketDatagramPacketInetSocketAddress API 做一个简单的回显服务器UDP版本的回显服务器TCP版本的回显服务器 客户端和服务器 在网络中&#xff0c;主动发起通信的一方是客户端&#xff0c;被动接受的这一方…

Rman全备和增量备份说明

RMAN备份分为全备和增量备份&#xff0c;全备不能成为增量备份策略的一部分&#xff0c;它也不能作为后续增量备份的基础。 RMAN增量备份分为0、1、2三级&#xff0c;其中0级备份是增量备份的基础&#xff0c;备份内容也跟全备份一样&#xff0c;要使用增量备份&#xff0c;必…

华为交换机如何配置Web网管登录?直接用网页管理交换机

Web网管是一种对交换机的管理方式&#xff0c;它利用交换机内置的Web服务器&#xff0c;为用户提供图形化的操作界面。用户可以从终端通过HTTPS登录到Web网管&#xff0c;对交换机进行管理和维护&#xff0c;同时也非常方便。 一、配置思路&#xff1a; 1、配置管理IP地址&am…

mysql 自定义函数create function

方便后续查询&#xff0c;做以下记录&#xff1b; 自定义函数是一种与存储过程十分相似的过程式数据库对象&#xff0c; 它与存储过程一样&#xff0c;都是由 SQL 语句和过程式语句组成的代码片段&#xff0c;并且可以被应用程序和其他 SQL 语句调用。 自定义函数与存储过程之间…

提供英语励志名言的软件有哪些?这些软件不可错过

提供英语励志名言的软件有哪些&#xff1f;在追求个人成长和激励的道路上&#xff0c;英语励志名言常常为我们提供前进的动力。这些言简意赅、充满智慧的话语&#xff0c;不仅能在我们迷茫时指引方向&#xff0c;还能在挫折中给予我们勇气和力量。如今&#xff0c;随着科技的发…

stm32和嵌入式linux可以同步学习吗?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「stm3的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;如果需要使用STM32&#xff0c;建…

http://127.0.0.1:9222/json打不开Chrome环境变量问题

解决方案&#xff1a; 系统环境变量Path设置错误&#xff0c; 1、先看下端口是否占用&#xff1a;netstat -ano|findstr “9222” &#xff0c; 如下127.0.0.1:9222端口显示LISTENING是正常的 如果是SYN_SENT可能不太正常&#xff0c;这个时候&#xff0c; taskkill /PID 端…

【前端素材】推荐优质后台管理系统APP Zina平台模板(附源码)

一、需求分析 当我们从多个层次来详细分析后台管理系统时&#xff0c;可以将其功能和定义进一步细分&#xff0c;以便更好地理解其在不同方面的作用和实际运作。 1. 功能层次 a. 用户管理功能&#xff1a; 用户注册和登录&#xff1a;管理用户账户的注册和登录过程。权限管…

如何使用Docker部署开源Leanote蚂蚁笔记并发布个人博客至公网

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 1. 安装Docker2. Docker本地部署Leanote蚂蚁笔记3. 安装…