C++读书笔记—使用指针技术实现内存块数据的移动

本文介绍了一种使用指针技术实现内存块数据移动的方法,通过将输入字符串的最后一个字符移动到字符串首部,其余字符依次后移,实现字符串的重新排列。例如输入asdfgh,输出为hasdfg。该方法分为五步:定义指针并分配内存空间、输出字符串至指定空间、处理字符串、输出处理后的字符串以及释放内存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/***************************************
使用指针技术实现内存块数据的移动:要求从键盘输入一个字符存放到某个内存空间中,然后把输入的字符串
最后一个字符调整到字符首部,其他字符以此向后移输出。比如输入“asdfgh”,输出"hasdfg"
实现方法:
(1)定义指针,分配内存空间
(2)输出字符串到指定的空间
(3)处理字符串
(4)输出字符串
(5)释放分配的内存空间
****************************************/
#include <iostream>
#include <cstring>
using namespace std;


int main()
{
   char tmp;
   int n;
   char *p = new char[20];
   if(NULL == p)
   {
  cout << "new memory is not ok" << endl;
   }
   
   cout << "please input string: " <<endl;
   cin >>p;
   
   n = strlen(p);
   cout << "strlen(p): " << n <<endl;
   for(int i = n-1;i >= 0;i--)
   {
  *(p+i+1) = *(p+i);
  if(i == 0)
  {
  *(p+i) = *(p+n);
  *(p+n) = '\0';
  }
   }
   
   cout << "string: " << p << endl;
   
   if(p != NULL)
   {
  delete [] p;
   }
   return 0;

}

输出:

please input string: 
asdfgh
strlen(p): 6
string: hasdfg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxa1334

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值