代码之家  ›  专栏  ›  技术社区  ›  Radha Gogia

赋值运算符如何处理二维字符数组的元素?

c
  •  -3
  • Radha Gogia  · 技术社区  · 6 年前

    对于下面的代码片段,我不知道如何将值赋给 names[1][2] 因为它返回第1行第2列的地址。我们如何分配 names[2][1] ?

    它将第2行第1列的地址返回给 ?

    我不知道如何将一个列地址存储在另一个列地址中。

    names[1][2]=names[2][1] ;   // what is it doing
    
    int main() {
        char names[3][20] = { "success", "gateway", "engineers" };
        int i;
        char *t;
    
        t = names[1][2];
        names[1][2] = names[2][1];
        names[2][1] = t;
    
        for (i = 0; i <= 2; i++)
            printf("%s  ", names[i]);
        return 0;
    }
    
    3 回复  |  直到 6 年前
        1
  •  0
  •   Abhijith Asokan    6 年前

    “我们如何将返回第2行第1列地址的名称[2][1]分配给名称[1][2]”

    names[2][1] 不返回地址,它在第三个字符串中给出第二个字符(因为零索引)。

    name[2][1] n .

    所以, names[1][2]=names[2][1] 基本上是分配 names[1][2] 角色在 .

        2
  •  0
  •   ollaw    6 年前

    names[x][y]
    names 是一个矩阵,其中每个单元格都是一个字符,所以第一行包含字符
    's','u','c','c','e','s','s' 在前七列中(其他行依此类推)。

    names[1][2]=names[2][1] ;
    

    意味着你在索引(1,2)的单元格上分配索引(2,1)的单元格的值,在你的例子中,你在编辑第二个单词的第三个字符,来自“ga” t “小道”

        3
  •  0
  •   chqrlie    6 年前

    在代码中,您只需交换第二行的第三个字符和第三行的第二个字符,您使用的类型不正确 char *t 保持价值。

    如果要交换2行,则应使用指向字符串的指针数组:

    #include <stdio.h>
    
    int main() {
        char *names[3] = { "success", "gateway", "engineers" };
        int i;
        char *t;
    
        t = names[1];
        names[1] = names[2];
        names[2] = t;
    
        for (i = 0; i < 3; i++)
            printf("%s ", names[i]);
        printf("\n");
        return 0;
    }