1

我有一个字符数组。n是数组的长度

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

然后我创建第二个数组

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

我想有指向相应元素的指针。我的意思是 t 2包含 tab 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]访问存储在数组位置i中的字符值t

有关 C 指针的优秀教程,请参见此处此处

于 2013-03-16T08:26:15.587 回答