【指针的使用方式】

简介: 【指针的使用方式】

利用指针进行交换


一.利用指针倒序字符串



void _reversal(char* left, char* right)
{
  while (left < right)
  {
    char tmp = *left;
    *left = *right;
    *right = tmp;
    left++;
    right--;
  }
}


通过上述代码不难看出,left与right分别代表一个字符数组的首端和尾端,通过中间变量 tmp进行首尾交换,left++中的left是char*类型,同时也可以看成为一维数组left[ i++],因此,移动的原理就是通过++移向下一个元素位置所在的地址right同理可得是移向上一个元素位置所在的地址。


微信图片_20230221114707.png


二.题目实例


对于一个较大的整数 N(1<=N<=2,000,000,000)

比如 980364535,我们常常需要一位一位数这个数字是几位数,但是如果在这个数

字每三位加一个逗号,它会变得更加易于朗读。因此,这个数字加上逗号成如下的

模样:980,364,535请写一个程序帮她完成这件事情


输入描述:

一行一个整数 N

输出描述:

一行一个字符串表示添加完逗号的结果


#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
void _reversal(char* left, char* right)
{
  while (left < right)
  {
    char tmp = *left;
    *left = *right;
    *right = tmp;
    left++;
    right--;
  }
}
int main()
{
  char arr1[2000] = { 0 };
  gets_s(arr1);
  int len = strlen(arr1);
  //翻转字符串
  _reversal(arr1, arr1 + len - 1);
  char arr2[2000] = { 0 };
  char* pr1 = arr1;
  char* pr2 = arr2;
  int i = 0;
  while (i <= len / 3 + 1)
  {
    pr2[0] = pr1[0];
    pr2[1] = pr1[1];
    pr2[2] = pr1[2];
    pr2[3] = ',';
    pr1 += 3;
    pr2 += 4;
    i++;
  }
  int len1 = strlen(arr2);
  //翻转字符串
  _reversal(arr2, arr2 + len1 - 1);
  if (arr2[0] == ',')
  {
    char* arr3 = arr2 + 1;
    printf("%s", arr3);
  }
  else
  {
    printf("%s", arr2);
  }
  return 0;
}


就本题而言,为什么我们在插入的时候需要进行倒序呢,通过观察我们发现,插入的方式是从个位开始的,因此,从逻辑上我们需要将它进行倒序来满足这个基本原理,不然可能会出现最后两个数(或者是一个数)前面会有逗号产生,这是规则不允许的。


三.总结:


对于这个题本身而言,方法不止一种,通过这道题的解法,目的就是可以 更好的理解通过指针如何逆序字符串加深对指针的了解,希望对大家有所 帮助,同时也希望小伙伴们指出不足之处,相互改进,共同进步。



相关文章
|
30天前
|
存储 安全 编译器
在 C++中,引用和指针的区别
在C++中,引用和指针都是用于间接访问对象的工具,但它们有显著区别。引用是对象的别名,必须在定义时初始化且不可重新绑定;指针是一个变量,可以指向不同对象,也可为空。引用更安全,指针更灵活。
|
3月前
|
存储 C语言
指针基础
指针基础
28 0
|
6月前
|
C语言
【C指针】深入理解指针(最终篇)数组&&指针&&指针运算题解析(一)1
【C指针】深入理解指针(最终篇)数组&&指针&&指针运算题解析(一)
200 51
|
6月前
|
存储
引用和指针的区别
引用和指针的区别
46 3
|
6月前
|
C语言
指针(7)---*和&的区别
指针(7)---*和&的区别
30 0
|
6月前
指针应用基础练习
指针应用基础练习
41 0
|
6月前
|
编译器
【C指针】深入理解指针(最终篇)数组&&指针&&指针运算题解析(一)3
【C指针】深入理解指针(最终篇)数组&&指针&&指针运算题解析(一)
|
6月前
|
编译器
【C指针】深入理解指针(最终篇)数组&&指针&&指针运算题解析(一)2
【C指针】深入理解指针(最终篇)数组&&指针&&指针运算题解析(一)
|
6月前
|
存储 安全 编译器
C++特性——引用与指针详解
C++特性——引用与指针详解
指针的基础
指针的基础
48 0