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 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)