char* p
p的含义是指向常量字符的指针
char* p="hello";
等价于const char* p="hello"
常量字符:说明hello这个字符串是无法改变的,则不能更改指针指向的内容,来改变字符串hello。
*(p+2)='w';
错误
指向的指针:是可以改变自身的值,输出p的时候就不是hello了而是别的字符串
p="newstring";
正确
char p[]
char p="hello";
等价于char const* pp="hello";
p的含义是指向字符串的指针常量
p是数组的引用,引用本身就是指针常量
指针常量定义:指针常量不能改变本身的值,但是可以改变指向的值
p="newstring";
是不合法
*(p+2)='w';
合法
实例
/**
字符串的循环左移,时间复杂度为0(n)
*/
#include <iostream>
#include <string.h>//strlen的头文件
using namespace std;
void Reserve2(char str[], int m, int n)
{
if(m>=n) return;
for(;m<n;m++,n--)
{
char tmp = *(str+m);//通过偏移量改变str字符串内容
*(str+m) = *(str+n);
*(str+n) = tmp;
}
}
void ConvertString(char str[], int p)
{
int size = strlen(str);
p = p%size;
Reserve2(str, 0, p-1);
cout<<str<<endl;
Reserve2(str, p, size-1);
cout<<str<<endl;
Reserve2(str, 0, size-1);
cout<<str<<endl;
}
int main()
{
char pp[] = "abcdefghijk";
ConvertString(pp, 2);
cout<<pp<<endl;
return 0;
}