char* p 和 char p[]區別及應用
阿新 • • 發佈:2019-02-05
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;
}