mmcc22c 2017-07-21 19:20 采纳率: 0%
浏览 931

求解一个关于C的二维数组指定初始化问题

为什么声明一个如int a[5][5]数组之后,对其初始化a[2][3]=5不可以,书上有说需要在开头声明并用一种形式初始化,但是为什么指针形式的
(*(a+2)+5)=5却可以呢,
#include
void copy(int(*ac)[8], int(*ar)[8], int c, int d, int a);
int main(void)
{
int c, i;
int copyc[3][8];
int num[3][8] = {
{ 3, 4, 5, 6, 7, 8, 9, 1 },
{ 3, 4, 5, 6, 7, 8, 9, 1 },
{ 3, 4, 5, 6, 7, 8, 9, 1 }
};

copy(copyc, num, 2, 3, 3);
for (i = 0; i < 3; i++) {
    for (c = 0; c < 8; c++)
        printf(" %d", *(*(copyc + i) + c));
    printf("\n");
}
getchar();
return 0;

}
void copy(int (*ac)[8], int(*ar)[8], int d, int c, int a)
{
int n;

for (n = 0; n <a; n++)
{
    *(*(ac + d) + c +n-1) = *(*(ac + d) + c+n-1);
}

}

  • 写回答

2条回答 默认 最新

  • u013914059 2017-07-22 01:19
    关注

    摘自:https://zhidao.baidu.com/question/252130759.html

    例如对整型二维数组a[3][2]赋值
    方法一:
    在定义的同时赋值
    int a[3][2]={0};//所有数组元素均为0
    方法二:
    int a[3][2]={1,2,3,4,5,6};//常规的赋值方法
    方法三:
    int a[3][2]={{1,2},{3,4},{5,6}};//分行的赋值方法
    方法四:
    int a[3][2]={{1,2},{0},{3}};//部分赋值方法,第一行元素的值分别为1,2,第二行元素值都是0,
    第三行第一个元素值为3,第二个元素值为0
    方法五:
    int a[3][2];/先定义
    for(i=0;i<=3;i++) //用双重for循环赋值,i,j表示二维数组下标
    for(j=0;j<=2;j++)
    scanf("%d",&a[i][j]);
    希望对你有所帮助。

    评论

报告相同问题?

悬赏问题

  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥20 jupyter保存图像功能的实现
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键