作业帮 > 综合 > 作业

C语言中如何取二维数组的一行(一列)?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/12 14:06:34
C语言中如何取二维数组的一行(一列)?
就像在Matlab中A(:,3)表示A矩阵的第三行一样,C语言中有没有类似的表示方法?
C语言中的数组实质是指针,比如一个数组是char c[32],那么你就可以将它看做是一个用malloc函数进行过分配内存的char *c,数组是指针的特殊形式.
而多维数组的实质是指向指针的指针,比如一个多维数组是char c[3][32],可以将它看做进行过分配内存的char **c.
知道了这点,就知道如何得到某一行了.
int main(int argc, const char * argv[])
{
    //声明一个二维数组
    char c [3][32];
    //分别输入三行数据
    sprintf(c[0], "第一行");
    sprintf(c[1], "第二行");
    sprintf(c[2], "第三行");
    //打印
    for (int a=0; a<=2; a++) {
        //用”c[a]“就可以表示第a行的字符串数组
        printf("%s\n",c[a]);
    }
    return 0;
}
输出得到结果:

第一行
第二行
第三行
再问: 谢谢回答!能不能举个数字的例子,比如二维数组A={{1,2},{3,4}};如何把A的第一行给B,使得B={1,2}。谢谢!
再答: 老老实实的用:int A[2][2] = {{1,2},{3,4}};
int B[2];
for (int a=0; a<=1; a++) {
    B[a] = A[0][a];
}来将A的第一行给B吧。或者试实际情况,自己写一个用来处理这种情况的函数。
因为字符数组用得是最多的,C语言提供了许多用于处理字符串的函数,比如strlen、strcpy、sprintf等等,其他类型就需要自己努力了。
再问: 好吧,看来只能这样了。谢谢!