code.club

標題: 有關字元陣列大小宣告的問題 [打印本頁]

作者: enter    時間: 2016-3-31 02:18
標題: 有關字元陣列大小宣告的問題
#include <iostream>
#include <stdio.h>
#include <cstdlib>
using namespace std;



class test{
        public:
       
        int x;
        char *s;//這裡沒有先指定字串大小
       
        test(int y, char *str):x(y),s(str)
        {}
       
               
        void show(){
                cout<<x<<" "<<s<<endl;
        }
        };
       
int main(){
       
        test t1(123,"qwertyuiopasdfghjklzx");//為何可以隨意填入多少字呢?       
        t1.show();
       
        return 0;
}
作者: enter    時間: 2016-3-31 02:22
#include <stdio.h>
#include <stdlib.h>

void test(char *s) //這裡也不用先給大小
{
        printf("%s",s);
       
}


int main(void){
       
        test("this is a good book for us, please buy it now!"); //這麼長也可以
       
        return 0;
}
作者: enter    時間: 2016-4-4 22:50
未先指定字元陣列的大小的例子:

void test(char* s){
   最直接是一行程式碼:cout<<s;
   第二種是:
      char*str;
      str=(char*)malloc(sizeof(s));
      str = s;
      cout<<str;
第三種可能要有標頭檔,但C++部份該用哪個呢?
    char*str;
   str=new char[(strlen(s)+1];
   str=s;
   或strcpy(str,s);
  cout<<str;
}


int main(){

  test("this is a book!");

return 0;
}
作者: enter    時間: 2016-4-6 01:52
#include <iostream>
#include <string.h>
using namespace std;

void test1(char*s){
        char*str;
        str=s;
        cout<<str<<endl;
}

void test2(char*s){
        char*str;
        str=new char[strlen(s)+1];
        strcpy(str,s);
        cout<<str<<endl;
        delete [] str;
}

void test3(char*s){
        char*str;
        str=(char*)malloc(sizeof(s));
        strcpy(str,s);
        cout<<str<<endl;
        delete[] str;
}

void test4(char*s){
        char*str;
        str=(char*)malloc(sizeof(s));
        str=s;
        cout<<str<<endl;
        delete[] str;
}

int main(){
       
        test1("this is 1");
        test2("this is 2");
        test3("this is 3");
        test4("this is 4");//這一項雖會得出執行結果,但最終卻會出現錯誤訊息。       
       
       
                return 0;
}




歡迎光臨 code.club (https://code.club/) Powered by Discuz! X3.2