1

文字の配列があります。n配列の長さです

    char tab[n];
    cin.get(tab, n);
    cout<<tab<<"\0"<<endl;

次に、2番目の配列を作成します

char* t = new char[n];
for(int i = 0; tab[i] != '\0'; i++){
    t[i] = tab[i]; 

}

対応する要素へのポインタが欲しいのですが。つまりt[2]、のアドレスが含まれていますtab[2]。次に、配列を並べ替えたいtので、そのtabままにしてtシャッフルするだけですがt、たとえば配列に変更を加えると

t [2] ='a';

緩むt[3]t[4]....

編集:

do{
    for(int i = 0; i < n -1; i++){
        if(t[i] > t[i+1]){
            char* x = &t[i];
            t[i] = t[i+1];
            t[i+1] = *x
        }
        n--;
    }
}while(n>1);
4

1 に答える 1

2

対応する要素へのポインタが欲しいのですが。つまり、 t2にはタブ2のアドレスが含まれてます

だからこれを試してみてください:

char** t = new (char*)[n];
for(int i = 0; tab[i] != '\0'; i++){
    t[i] = tab+i; // or `&(tab[i])`

t値に基づいて配列を並べ替えるにはtab、を使用して、配列の*t[i]場所に格納されている文字値にアクセスします。it

Cポインターに関する優れたチュートリアルについては、ここここを参照してください。

于 2013-03-16T08:26:15.587 に答える