1.指针与数组的区别小结:
在平时的学习中,往往有一个误区“数组等于指针”,多数情况下如此,但很多时候却并不是这样。
首先,file1.c:
int man[100];
file2.c
extern int *man;
上面的例子中会因为类型不匹配而报错。
指针总是有类型限制,是因为编译器需要知道对指针进行解除引用的时候需要取几个字节。
例如:int a[2][3][5];
int (*p)[3][5]=a;
int (*r)[5]=a[i];
int *t=a[i][j];
int u=a[i][j][k];
指针大小是一样的,但是指针所指元素的大小是不同的,这就决定了当指针解除引用的时候所取得的数值。
另外:
int a[20];
int *b=(int *)malloc(sizeof(int)*20);
然后sizeof(a)!=sizeof(b)
指针 | 数组 |
保存数据的地址 | 保存数据本身 |
间接访问数据 | 直接访问数据 |
常用与动态数据结构 | 常用于固定数目类型相同的元素 |
2.多维数组的间隔定义
对于一个3*3的数组,如果我们仅仅想定义其中的第一行和第三行,那么我们应该如何做呢?看下文:
6 int a[3][3]={
7 [0]={1,2,3 },
8 [2]={7,8,9 },
9 };