服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C语言 深入浅出讲解指针的使用

C语言 深入浅出讲解指针的使用

2022-11-01 15:34Fighting阳! C/C++

指针是C语言中一个非常重要的概念,也是C语言的特色之一。使用指针可以对复杂数据进行处理,能对计算机的内存分配进行控制,在函数调用中使用指针还可以返回多个值

一、利用指针倒序字符串

?
1
2
3
4
5
6
7
8
9
10
11
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同理可得是移向上一个元素位置所在的地址。

C语言 深入浅出讲解指针的使用

二、题目实例

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

比如 980364535,我们常常需要一位一位数这个数字是几位数,但是如果在这个数 字每三位加一个逗号,它会变得更加易于朗读。因此,这个数字加上逗号成如下的 模样:980,364,535请写一个程序帮她完成这件事情

输入描述:

一行一个整数 N

输出描述:

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#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;
}

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

三、总结

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

到此这篇关于C语言 深入浅出讲解指针的使用的文章就介绍到这了,更多相关C语言 指针的使用内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/NEFUT/article/details/123680249

延伸 · 阅读

精彩推荐
  • C/C++opencv实现三帧差法解析

    opencv实现三帧差法解析

    这篇文章主要介绍了opencv实现三帧差法的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    xiao__run10202021-08-27
  • C/C++C语言中函数指针与软件设计经验总结

    C语言中函数指针与软件设计经验总结

    今天小编就为大家分享一篇关于C语言中函数指针与软件设计经验总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟...

    李先静11622021-07-13
  • C/C++C语言实现三角函数表

    C语言实现三角函数表

    这篇文章主要为大家详细介绍了C语言三角函数表,打印出相对应的三角函数值,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    SorelCheung11952021-07-30
  • C/C++zlib库压缩和解压字符串STL string的实例详解

    zlib库压缩和解压字符串STL string的实例详解

    这篇文章主要介绍了zlib库压缩和解压字符串STL string的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下...

    infoworld4772021-06-08
  • C/C++C语言的基本语法详解

    C语言的基本语法详解

    本篇文章主要讲解C语言 基本语法,这里提供简单的示例和代码来详细讲解C语言的基本语法,开始学习C语言的朋友可以看一下,希望能够给你带来帮助...

    小途7692022-01-10
  • C/C++详细分析C++ 多态和虚函数

    详细分析C++ 多态和虚函数

    这篇文章主要介绍了C++ 多态和虚函数的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...

    菜鸟教程8072021-09-15
  • C/C++C语言实现页面置换算法(FIFO、LRU)

    C语言实现页面置换算法(FIFO、LRU)

    这篇文章主要介绍了通过C语言实现的两种页面置换算法:先进先出(FIFO)页面置换算法和最近最久未使用(LRU)页面置换算法。文中的代码具有一定的学习或工...

    S_MIL9632022-07-08
  • C/C++C语言和C++的6点区别

    C语言和C++的6点区别

    在本篇文章里我们给大家整理了关于C语言和C++的6点区别,需要的朋友们可以学习参考下。...

    C语言教程网5892021-07-24