快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

乐橙lc1818:C语言学习笔记(7)



1. 指针和数组

这个在最初进修C说话时就学过了,在此只是简单提下。看一段代码:

#define SIZE 10

int main (void)

{

int a[SIZE],*p,sum;

int i;

p=a;

sum=0;

for(i =0;ifor(;p"%d",sum);

}

很简单的一段代码,便是经由过乐橙lc1818程指针来造访数组元素,在此只提一点,便是&a[SIZE],虽然 a[SIZE]不存在,数组的着末一个元素时a[SIZE-1],然则C编译器不会对下标进行越界反省,也便是说a[SIZE]一样可以造访,以是乐橙lc1818我们可以用这样的要领来终止for轮回。

别的,面对指针造访数组照样下标造访数组,都是环抱着造访效率来的。着实这依附于不合编译器的详细实现,在C标准中并无说起。

2. 指针与多维数组

这个在我大年夜学学C说话时,不停都没有理解,不过现在看来对照轻易了。

二维数组实际上在存储上也是一段继续的内存空间,是以我们可以将二维数组当做一维数组来对待,如下面的代码:

#define ROW 3

#define COL 5

int main (void)

{

int a[ROW][COL],*p,sum;

int i,j;

p=&a[0][0];

sum=0;

for(i =0;ifor(j=0;jwhile(p"%d",sum);

}

然则这样做看起来可读性并不好,对付一些老编译器来说这样做的效率较高,可是对付今世编译器来说已经没有了这样的上风。

是以我们一样平常应该这样来做,我们知道,对付二维数组来说,例如a[i][j] ,着实a[0]代表的便是第一行的首元素的地址。那么我们就可以使用这个来造访多维数组元素:

#define ROW 3

#乐橙lc1818define COL 5

int main (voi乐橙lc1818d)

{

int a[ROW][COL],*p,sum;

in乐橙lc1818t i,j;

sum=0;

for(i =0;ifor(j=0;jfor(i=0;ifor(p=a[i];p"%d",sum);

}

您可能还会对下面的文章感兴趣: