【问题标题】:How to make pointers to chars in the second array如何在第二个数组中创建指向字符的指针
【发布时间】:2013-03-16 08:24:46
【问题描述】:

我有一个字符数组。 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);

【问题讨论】:

    标签: c++ pointers char cin


    【解决方案1】:

    我想要指向相应元素的指针。我的意思是 t2 包含 tab2 的地址。

    所以试试这个:

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

    要根据tab 值对t 数组进行排序,请使用*t[i] 访问存储在t 数组的位置i 中的字符值。

    有关 C 指针的优秀教程,请参阅 herehere

    【讨论】:

    • char** t 看起来像二维数组。那么` t[i] = (tab + isizeof(char));`
    • @Robert 你会通过阅读我提到的教程得到答案。使用单个*,您正在定义一个简单的指针,它可以指向单个元素(注意:数组在内部就像指针)。但是你需要一个指针数组。您可以使用 指向 char 指针的指针。这就是为什么你需要**
    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    相关资源
    最近更新 更多