C语言_数组与指针

来源:互联网 发布:编程语言与脚本语言 编辑:程序博客网 时间:2024/05/17 02:50


//指向二维数组的指针    int array[3][4]=    {        {1,2,3,4},        {11,12,13,14},        {111,112,113,114}    };    //array[0],array[1],array[2]分别代表了各种对应的一维数组的首元素地址,他是一个地址并不是一个数组元素    //array[0][0]//使用下标访问数组元素    //如何使用指针访问数组元素?    //*(array)相当于array[0]    //*(array+1)相当于 array[1],array[1]是一个地址,对于这第二行的一个一维数组的首个元素地址    printf("array[1][1]=%d\n",*(*(array+1)+1));    *(*(array+1)+1);//相当于array[1][1]是第二行第二个元素的地址,然后继续使用*号,即可取出其对应的值了    printf("array[2][3]=%d\n",*(*(array+2)+3));    //使用指针遍历二维数组    for (int i=0; i<3; i++)    {        for(int j=0;j<4;j++)        {            printf("*(*(arra+%d)+%d)=%d\n",i,j,*(*(array+i)+j));        }    }    //声明一个指针变量让它指向二维数组    int *p9;    p9=array;    //这样是不可以的,因为p9中的值指向的内存单元的值的数据类型是整型的.我们知道.array代表的是二维数组的第一个元素的地址,第一个元素又是一个一维数组,那么,p9=array,这相当于让p9指针存放了一个地址,二这个地址所对应的存储单元在存储的又是一个地址,所以是不可以的.    p9=array[0];    p9=&array[0][0];    //p9=array[0]把array的首地址赋给p9;


0 0