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.hqwc.cn/news/475375.html

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

相关文章

开源软件:推动软件行业繁荣的力量

文章目录 &#x1f4d1;引言开源软件的优势分析开放性与透明度低成本与灵活性创新与协作 开源软件对软件行业的影响推动技术创新和进步促进软件行业的合作与交流培养人才和提高技能促进软件行业的可持续发展 结语 &#x1f4d1;引言 随着信息技术的飞速发展&#xff0c;软件已经…

NVIDIA Chat with RTX

NVIDIA在2月13日发布了Chat With RTX&#xff0c;这是一款类似于ChatGPT的免费个性化 AI 聊天机器人&#xff0c;可以在配备 Nvidia RTX 显卡的 PC 上本地运行。它使用Mistral或Llama开放权重LLM&#xff0c;可以搜索本地文件并回答有关它们的问题。本文中我们一起来了解一下Ch…

【OpenAI Sora】 最强文生视频怎么用-新手小白必看教程

1. Sora 是什么AI 2024年2月16日&#xff0c;OpenAI在其官网上面正式宣布推出文本生成视频的大模型 Sora。 Sora能够根据简单的文本描述&#xff0c;生成高达60秒的高质量视频&#xff0c;使得视频创作变得前所未有的简单和高效。本文将为您提供关于如何使用Sora的最新详细教程…

机器学习入门--双向长短期记忆神经网络(BiLSTM)原理与实践

双向长短记忆网络&#xff08;BiLSTM&#xff09; BiLSTM&#xff08;双向长短时记忆网络&#xff09;是一种特殊的循环神经网络&#xff08;RNN&#xff09;&#xff0c;它能够处理序列数据并保持长期记忆。与传统的RNN模型不同的是&#xff0c;BiLSTM同时考虑了过去和未来的…

【EI会议征稿通知】第五届城市工程与管理科学国际会议(ICUEMS 2024)

【Scopus稳定检索】第五届城市工程与管理科学国际会议&#xff08;ICUEMS 2024&#xff09; 2024 5th International Conference on Urban Engineering and Management Science 第五届城市工程与管理科学国际会议&#xff08;ICUEMS 2024&#xff09;将于2024年5月31日-6月2日…

惠普打印机驱动安装

一、下载驱动 支持 --> 软件与驱动程序 https://www.hp.com/cn-zh/home.html 选择打印机 输入打印机型号&#xff0c;下拉框选择自己的打印机型号 打印机型号正常在打印机的正面会有 往下滑选择安装软件和全功能/基本功能驱动程序-仅支持打印和扫描功能 (1) 点击下载…

代码随想录 Leetcode435. 无重叠区间

题目&#xff1a; 代码(首刷看解析 2024年2月17日&#xff09;&#xff1a; class Solution { private:const static bool cmp(vector<int>& a,vector<int>& b) {return a[0] < b[0];} public:int eraseOverlapIntervals(vector<vector<int>&…

vue生命周期函数

父子组件加载顺序 加载渲染过程 父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted子组件更新过程 父beforeUpdate->子beforeUpdate->子updated->父updated父组件更新过程 父beforeU…

【CSS】设置文字(文本)的渐变色

# 渐变色 文字 第一步 设置渐变颜色 background: linear-gradient(278.83deg, #5022bd 31.42%, #8636d1 75.55%); // 先设置渐变色背景&#xff1b; 第二步 设置颜色的使用范围 background-clip: text; // 背景被裁剪成文字的前景色。 -webkit-background-clip: text; 第三步…

JMeter接口测试数据分离驱动应用

步骤&#xff1a; 创建csv文件&#xff0c;编写接口测试用例 新建线程组——创建循环控制器&#xff08;循环次数填用例总数&#xff09; 创建CSV数据文件设置&#xff0c;设置参数。&#xff08;注意&#xff1a;是否允许带引号&#xff1f;&#xff1a;一定要设置为true&a…

微信安装包为啥越来越大?

一、微信安装包大小的变化趋势 微信作为中国最流行的即时通讯应用之一&#xff0c;其安装包大小一直是用户普遍关注的话题。随着技术的发展和功能的增加&#xff0c;微信安装包的大小也呈现出明显的变化趋势。从最初的几MB到如今的数十MB甚至上百MB&#xff0c;微信安装包的不…

报错405(errAxiosError: Request failed with status code 405)

errAxiosError: Request failed with status code 405 前端调用接口的方法跟后台定义接口的方法不一致