将二维数组赋值给一维的数组指针

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//1
#include<stdio.h>
int main(){
int s[4][6]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int t[6][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int (*p)[6];
p=t;
for(int i = 0; i < 6;i++)
printf(" p[%d] : %d\t",i,(*p)[i]);
}

//2
#include<stdio.h>
int main(){
int s[4][6]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int t[6][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int (*p)[6];
p=s;
for(int i = 0; i < 6;i++)
printf(" p[%d] : %d\t",i,(*p)[i]);
}

方式一会报错,不兼容。

也就是说一维的数组指针是一个行指针,只能指向有6个元素且每个元素是int的一维数组。s虽然是二维数组,但也是一行有6个的数组。