黑马程序员 学习日记(三)-数组

来源:互联网 发布:淘宝劲霸旗舰店真的吗 编辑:程序博客网 时间:2024/05/18 01:01

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

数组是一族有序数据的集合。数组中各数据的排列是有一定规律的,下标代表数据在数组中的序号。用一个数组名s和下标10 例如s[10]来访问数组中的某个元素。数组中的每一个元素都是属于同一个数据类型。

一维数组的定义:

类型符 数组名[常量表达式]

数组定义需要一些注意:

1.数组名符合标识符命名规范。

2.再定义数组时,需要指定数组中元素的个数。

3.数组的常量表达式不能包含变量。

        4.在某些情况下。例如

void func(int n)

{

int a[n];

}

一维数组的初始化

1.在定义时可以对全部或部分元素赋值,

例如:int a[5] = {1,2,3,4,5}; int a[5]={1,3,5};未赋值的变量自动补0;

2.当对全部元素赋值的时候 可以不指定数组长度

例如:int a[] = {1,2,3,4,5};

数组实际用例:

用数组来处理fibonacci数列问题

#include <stdio.h>int main(){    int i;    int f[20]={1,1};    for(i=2;i<20;i++)        f[i] = f[i-2] +f[i-1];    for(i=0;i<20;i++)    {        if(i%5==0) printf("\n");        printf("%12d",f[i]);     }    printf("\n");    return 0;}

二维数组

类型说明符 数组名[常量表达式][常量表达式]

二维数组就是一个一维数组每个元素都是一个一维数组。

二维数组的初始化类似于一维数组。有固定元素的二维数组赋值时,不能省略第二个纬度;

二维数组举例

用二维数组实现矩阵反转

#include <stdio.h>int main(){    int a[2][3] = {{1,2,3},{4,5,6}};    int b[3][2], i, j;    printf("array a: \n");    for(i=0; i<=1; i++)    {         for(j=0;j<=2;j++)        {            printf("%5d",a[i][j]);            b[j][i]=a[i][j];         }         printf("\n");    }    printf("array b:\n");    for(i=0; i<=1; i++)    {        for(j=0;j<=1;j++)        {             printf("%5d",b[i][j]);         }         printf("\n");     }     return 0;}

    字符数组

可以通过a[10]={"adfdsfsd"};或者a[10]="adfdsfsd";来定义字符数组。字符数组需要考虑字符串后面的'\n';

通过指针去引用数组的元素

当p指向数组时

数组元素的指针就是数组元素的地址

int a[10];

int *p;

p=&a[0];

p指向a的首元素。可以通过*(p+n) 来访问a[n];


需要特别注意的是数组指针与指针数组

指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针

数组指针:a pointer to an array,即指向数组的指针

还要注意的是他们用法的区别,下面举例说明。

int* a[4]     指针数组     

                 表示:数组a中的元素都为int型指针    

                 元素表示:*a[i]   *(a[i])是一样的,因为[]优先级高于*

int (*a)[4]   数组指针     

                 表示:指向数组a的指针

                 元素表示:(*a)[i]  

注意:在实际应用中,对于指针数组,我们经常这样使用:

这跟上面指针数组定义所表达的意思是一样的,只不过采取了类型变换。


---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

详细请查看:www.itheima.com

0 0
原创粉丝点击