C語言 深入淺出講解指針的使用
一、利用指針倒序字符串
void _reversal(char* left, char* right)
{
while (left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
通過上述代碼不難看出,left與right分別代表一個(gè)字符數(shù)組的首端和尾端,通過中間變量 tmp進(jìn)行首尾交換,left++中的left是char*類型,同時(shí)也可以看成為一維數(shù)組left[ i++],因此,移動的原理就是通過++移向下一個(gè)元素位置所在的地址right同理可得是移向上一個(gè)元素位置所在的地址。

二、題目實(shí)例
對于一個(gè)較大的整數(shù) N(1<=N<=2,000,000,000)
比如 980364535,我們常常需要一位一位數(shù)這個(gè)數(shù)字是幾位數(shù),但是如果在這個(gè)數(shù) 字每三位加一個(gè)逗號,它會變得更加易于朗讀。因此,這個(gè)數(shù)字加上逗號成如下的 模樣:980,364,535請寫一個(gè)程序幫她完成這件事情
輸入描述:
一行一個(gè)整數(shù) N
輸出描述:
一行一個(gè)字符串表示添加完逗號的結(jié)果
#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);
//翻轉(zhuǎn)字符串
_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);
//翻轉(zhuǎn)字符串
_reversal(arr2, arr2 + len1 - 1);
if (arr2[0] == ',')
{
char* arr3 = arr2 + 1;
printf("%s", arr3);
}
else
{
printf("%s", arr2);
}
return 0;
}
就本題而言,為什么我們在插入的時(shí)候需要進(jìn)行倒序呢,通過觀察我們發(fā)現(xiàn),插入的方式是從個(gè)位開始的,因此,從邏輯上我們需要將它進(jìn)行倒序來滿足這個(gè)基本原理,不然可能會出現(xiàn)最后兩個(gè)數(shù)(或者是一個(gè)數(shù))前面會有逗號產(chǎn)生,這是規(guī)則不允許的。
三、總結(jié)
對于這個(gè)題本身而言,方法不止一種,通過這道題的解法,目的就是可以 更好的理解通過指針如何逆序字符串加深對指針的了解,希望對大家有所 幫助,同時(shí)也希望小伙伴們指出不足之處,相互改進(jìn),共同進(jìn)步。
到此這篇關(guān)于C語言 深入淺出講解指針的使用的文章就介紹到這了,更多相關(guān)C語言 指針的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c++中深淺拷貝以及寫時(shí)拷貝的實(shí)現(xiàn)示例代碼
這篇文章主要給大家介紹了關(guān)于c++中深淺拷貝以及寫時(shí)拷貝實(shí)現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08
Matlab實(shí)現(xiàn)簡易紀(jì)念碑谷游戲的示例代碼
《紀(jì)念碑谷》是USTWO公司開發(fā)制作的解謎類手機(jī)游戲,在游戲中,通過探索隱藏小路、發(fā)現(xiàn)視力錯(cuò)覺以及躲避神秘的烏鴉人來幫助沉默公主艾達(dá)走出紀(jì)念碑迷陣。本文將用Matlab編寫簡易版的紀(jì)念碑谷游戲,感興趣的可以了解一下2022-03-03
QT獲取顯示當(dāng)前時(shí)間和日期的方法(用QTime,QDate和QDateTime)
獲取當(dāng)期日期時(shí)間在我們?nèi)粘i_發(fā)中經(jīng)常會遇到,下面這篇文章主要給大家介紹了關(guān)于QT獲取顯示當(dāng)前時(shí)間和日期的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08

