程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C/C++--關於指針的一些開辟和賦值

C/C++--關於指針的一些開辟和賦值

編輯:C++入門知識

 

今天寫個代碼,一直報錯本來就是解個字符串的左旋問題,可是老報錯,都快煩死了,後來在網上的到熱心的網友的解答,豁然開朗!呵呵,,現在貼出來大家一起學習!

 

 

#include <iostream> 

#include <cstring> 

#include <malloc.h> 

using namespace std; 

int main() 

    char *str=(char *)malloc(20*sizeof(char)); //給指針開辟內存第一種方法 

    //char a[20];                              //給指針開辟內存第二種方法 

    //str=a; 

    //str=new char[20];                        //給指針開辟內存第三種方法 

    //str="wudemiao";                          //給指針賦值第一種方法 

    strcpy(str,"wudemiao");                    //給指針賦值第二種方法(注意區別) 

    cout<<strlen(str)<<endl; 

    cout<<str<<endl; 

    int N=strlen(str); 

    int M=4; 

    char ch; 

    while(M--){ 

        ch=str[N-1]; 

        for(int i=N-1;i>0;i--) 

        { 

            str[i]=str[i-1]; 

        } 

        str[0]=ch; 

 

    } 

    cout<<str<<endl; 

    //delete str;                               //如果使用的第三種方法,千萬別掉了 

                                                //掉了,就內存洩漏 

    return 0; 

 

//需要解釋一下的是,在我們為指針開辟內存時的上面說道 

//的三種方法中,要注意的是記得使用delete str;避免內 

//存洩漏。如果使用的是str="wudemiao";為這一句你把str 

//指針指向一個字符串常量,上一句創建的那20個字符串現 

//在已經訪問不到了,這是內存洩露 很嚴重的問題。後面又 

//通過str指針去修改它引用的常量的常量,常量肯定是不能 

//修改的,所以就出錯了。但是使用strcpy(str,"wudemiao"); 

//strcpy()則生成了一個副本,這個副本是一個數組,自然 

//是變量,所以無論你用哪種方法給指針開辟內存,如果你 

//使用的是str="wudemiao"的話,那麼str指向的就是一個字 

//符常量,無論在C/C++中都是不能改變常量的值的。 

 

摘自 wudemiao的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved