1. 程式人生 > >char* p 和 char p[]區別及應用

char* p 和 char p[]區別及應用

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; }