C語言 深入淺出講解指針的使用
一、利用指針倒序字符串
void _reversal(char* left, char* right) { while (left < right) { char tmp = *left; *left = *right; *right = tmp; left++; right--; } }
通過上述代碼不難看出,left與right分別代表一個字符數(shù)組的首端和尾端,通過中間變量 tmp進(jìn)行首尾交換,left++中的left是char*類型,同時也可以看成為一維數(shù)組left[ i++],因此,移動的原理就是通過++移向下一個元素位置所在的地址right同理可得是移向上一個元素位置所在的地址。
二、題目實(shí)例
對于一個較大的整數(shù) N(1<=N<=2,000,000,000)
比如 980364535,我們常常需要一位一位數(shù)這個數(shù)字是幾位數(shù),但是如果在這個數(shù) 字每三位加一個逗號,它會變得更加易于朗讀。因此,這個數(shù)字加上逗號成如下的 模樣:980,364,535請寫一個程序幫她完成這件事情
輸入描述:
一行一個整數(shù) N
輸出描述:
一行一個字符串表示添加完逗號的結(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; }
就本題而言,為什么我們在插入的時候需要進(jìn)行倒序呢,通過觀察我們發(fā)現(xiàn),插入的方式是從個位開始的,因此,從邏輯上我們需要將它進(jìn)行倒序來滿足這個基本原理,不然可能會出現(xiàn)最后兩個數(shù)(或者是一個數(shù))前面會有逗號產(chǎn)生,這是規(guī)則不允許的。
三、總結(jié)
對于這個題本身而言,方法不止一種,通過這道題的解法,目的就是可以 更好的理解通過指針如何逆序字符串加深對指針的了解,希望對大家有所 幫助,同時也希望小伙伴們指出不足之處,相互改進(jìn),共同進(jìn)步。
到此這篇關(guān)于C語言 深入淺出講解指針的使用的文章就介紹到這了,更多相關(guān)C語言 指針的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言數(shù)據(jù)結(jié)構(gòu)中堆排序的分析總結(jié)
堆是計(jì)算機(jī)科學(xué)中一類特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱,通常是一個可以被看做一棵完全二叉樹的數(shù)組對象。而堆排序是利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。本文將通過圖片詳細(xì)介紹堆排序,需要的可以參考一下2022-04-04基于Windows C++ 應(yīng)用程序通用日志組件的使用詳解
眾所周知,在調(diào)試、跟蹤和執(zhí)行應(yīng)用程序的過程中,程序的日志能為這些工作提供大量有價(jià)值的運(yùn)行信息。因此,程序的日志對應(yīng)用程序的運(yùn)行、維護(hù)至關(guān)重要2013-05-05C語言字符串與字符數(shù)組面試題中最易錯考點(diǎn)詳解
這篇文章主要介紹了C語言字符串與字符數(shù)組面試題中最易錯考點(diǎn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-09-09