C语言—指针

 碎碎念:做指针题的时候我仿佛回到了原点,总觉得目的是为了把框架搭建起来,我胡说的哈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.rhkb.cn/news/258478.html

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

相关文章

BulingBuling - 《研究巴菲特》 [ Buffettology ]

研究巴菲特 使沃伦-巴菲特成为世界上最著名的投资者的那些以前未曾解释过的技术 作者&#xff1a;玛丽-巴菲特 Buffettology The Previously Unexplained Techniques That Have Made Warren Buffett The Worlds Most Famous Investor By Mary Buffett 内容提要 《Buffetto…

JavaWeb-JDBC-API详解

一、JDBC介绍 二、JDBC 快速入门 package com.itheima.jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement;public class JDCBDemo {public static void main(String[] args) throws Exception {//1、注册驱动Class.forName("co…

[OPEN SQL] 新增数据

INSERT语句用于数据的新增操作 本次操作使用的数据库表为SCUSTOM&#xff0c;其字段内容如下所示 航班用户(SCUSTOM) 该数据库表中的部分值如下所示 1.插入单条数据 语法格式 INSERT <dbtab> FROM <wa>. INSERT INTO <dbtab> VALUES <wa>. INSERT &…

链式结构实现队列

链式结构实现队列 1.队列1.1队列的概念及结构1.2队列的实现 2. 队列的各种函数实现3. 队列的全部代码实现 1.队列 1.1队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出 FIFO(Fi…

TiDB 在医疗保障信息平台的应用实践

文章介绍了 TiDB 在医疗保障信息平台中的应用。东软医保云应用管理平台通过与 TiDB 联合&#xff0c;成功满足了医疗保障业务中高并发、实时性和复杂查询的要求。在某地市医疗保障信息平台的实践中&#xff0c;TiDB 分布式数据库有效实现了在线交易和实时分析服务&#xff0c;日…

HTML5 Canvas与JavaScript携手绘制动态星空背景

目录 一、程序代码 二、代码原理 三、运行效果 一、程序代码 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>星空背景</title> </head> <body style"overflow-x:hidden;"><canvas …

网络原理-TCP_IP(6)

网络层 在复杂的网络环境中确定一个合适的路径. IP协议 与TCP协议并列,都是网络体系中最核心的协议. 基本概念 主机:配有IP地址,但是不进行路由控制的设备; 路由器:即配有IP地址,又能进行路由控制; 节点:主机和路由器的统称; 协议头格式 4位版本号(version):指定IP协议的版…

【JavaEE】spring boot快速上手

SpringBoot快速上手 文章目录 SpringBoot快速上手Maven会出现的一个官方bug创建完项目之后常用的的三个功能依赖管理Maven仓库中央仓库本地仓库国内源配置私服 springboot项目创建什么是springspring boot项目的创建Hello Worldweb服务器 SpringMVC什么是SpringWebMVC什么是MVC…

mpack简明教程

文章目录 摘要MessagePack简介MPACK的简单使用在定长的buffer存储不定长的数据读取截断的数据 摘要 本文先简单介绍MessagePack的基本概念。 然后&#xff0c;介绍一个MessagePack C API - MPack的通常使用。 接着尝试对MPack截断数据的读取。 注&#xff1a;本文完整代码见…

Android 13.0 SystemUI下拉状态栏定制二 锁屏页面横竖屏解锁图标置顶显示功能实现

1.前言 在13.0的系统rom定制化开发中,在关于systemui的锁屏页面功能定制中,由于在平板横屏锁屏功能中,时钟显示的很大,并且是在左旁边居中显示的, 由于需要和竖屏显示一样,所以就需要用到小时钟显示,然后同样需要居中,所以就来分析下相关的源码,来实现具体的功能 如图…

【MySQL】:DQL查询

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; MySQL从入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. DQL1.1 基本语法1.2 基础查询1.3 条件查询1.3 聚合函数 &#x1f324;️ 全篇…

如何解决缓存和数据库的数据不一致问题

数据不一致问题是操作数据库和操作缓存值的过程中&#xff0c;其中一个操作失败的情况。实际上&#xff0c;即使这两个操作第一次执行时都没有失败&#xff0c;当有大量并发请求时&#xff0c;应用还是有可能读到不一致的数据。 如何更新缓存 更新缓存的步骤就两步&#xff0…

c语言--一维数组传参的本质(详解)

目录 一、前言二、代码三、形式3.1形式13.2形式2 四、总结 一、前言 首先从⼀个问题开始&#xff0c;我们之前都是在函数外部计算数组的元素个数&#xff0c;那我们可以把函数传给⼀个函数后&#xff0c;函数内部求数组的元素个数吗&#xff1f; 二、代码 直接上代码&#x…

初识Qt | 从安装到编写Hello World程序

文章目录 1.前端开发简单分类2.Qt的简单介绍3.Qt的安装和环境配置4.创建简单的Qt项目 1.前端开发简单分类 前端开发&#xff0c;这里是一个广义的概念&#xff0c;不单指网页开发&#xff0c;它的常见分类 网页开发&#xff1a;前端开发的主要领域&#xff0c;使用HTML、CSS …

『运维备忘录』之 Sed 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是&#xff0c;甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作&#xff0c;持续给大家更新运维工作所需要接触到的知识点&#xff0c;希望大…

C++中的volatile:穿越编译器的屏障

C中的volatile&#xff1a;穿越编译器的屏障 在C编程中&#xff0c;我们经常会遇到需要与硬件交互或多线程环境下访问共享数据的情况。为了确保程序的正确性和可预测性&#xff0c;C提供了关键字volatile来修饰变量。本文将深入解析C中的volatile关键字&#xff0c;介绍其作用、…

【c++】list 模拟

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;能手撕list模拟 > 毒鸡汤&#xff1a;不为模糊…

蓝桥杯:C++模运算、快速幂

模运算 模运算是大数运算中的常用操作。如果一个数太大&#xff0c;无法直接输出&#xff0c;或者不需要直接输出&#xff0c;则可以对它取模&#xff0c;缩小数值再输出。取模可以防止溢出&#xff0c;这是常见的操作。 模是英文mod的音译&#xff0c;取模实际上是求余。 取…

交通管理|交通管理在线服务系统|基于Springboot的交通管理系统设计与实现(源码+数据库+文档)

交通管理在线服务系统目录 目录 基于Springboot的交通管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、驾驶证业务管理 3、机动车业务管理 4、机动车业务类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计…

【超级干货】ArcGIS_空间连接_工具详解

帮助里对空间连接的解释&#xff1a; 根据空间关系将一个要素的属性连接到另一个要素。 目标要素和来自连接要素的被连接属性写入到输出要素类。 如上图所示&#xff0c;关键在于空间关系&#xff0c;只有当两个要素存在空间关系的时候&#xff0c;空间连接才有用武之地。 一…