一,二维数组的相关问题

来源:互联网 发布:滚动的天空矩阵浪潮 编辑:程序博客网 时间:2024/06/10 05:13
#define _CRT_SECURE_NO_WARNINGS 1//1.解析一维数组的创建和初始化    type_t arr_name [const_n];    //type_t是创建数组的类型,arr_name是数组名,[const_n]里是常量表达式,用来指定数组的大小;    int arr[3] = { 1, 2, 3 };//创建一个大小为3个元素的整型数组;    char arr[3] = "abc";//创建一个大小为3个元素的字符型数组;    char arr[4] = { 'a', 'b', 'c','\0' };    float arr[3];//创建一个大小为3个元素的浮点型数组;    double arr[3];//创建一个大小为3个元素的双精度浮点数组;//2.一维数组的使用#include <stdio.h>#include <stdlib.h>    int main()    {        int arr[10] = { 0 };//数组的不完全初始化        //对数组内容赋值,数组是使用下标来访问的,下标从零开始        int i = 0;//做下标        //输出数组内容        for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)        {            printf("%d ", arr[i]);        }        system("pause");        return 0;    }//3.一维数组的存储#include <stdio.h>#include <stdlib.h>    int main()    {        int arr[10] = { 0 };        int i = 0;        for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)        {            printf("&arr[%d]=%p\n", &arr[i]);//打印每个元素的地址        }        system("pause");        return 0;    }//数组在内存中是连续存放的    ![这里写图片描述](http://img.blog.csdn.net/20170719170022560?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvR3VpanVuNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) //4.指针的定义int *ptr = NULL;//定义针变量,初始化为NULLchar *ptr = NULL;//定义一个字符一个整型的指的指针变量,初始化为NULLdouble *ptr = NULL;//定义一个双精度浮点数的指针变量,初始化为NULLint num = 10;int *p_num = &num;//将num的地址存放在p_num的指针变量中*p_num = 20;//改变的其实是num这个变量的内容    //一维数组指针的访问#include <stdio.h>#include <stdlib.h>int main(){    int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };    printf("%p\n", arr);    printf("%d\n", *arr);    system("pause");    return 0;}//数组的数组名其实是首元素地址#include <stdio.h>#include <stdlib.h>int main(){    int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };    int i = 0;    for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)    {        printf("&arr[%d]=%p\n", &arr[i]);        printf("%p\n", arr + i);    }    system("pause");    return 0;}//通过数组名+整数的运算可以获取到数组每个元素的地址  //使用指针访问数组#include <stdio.h>#include <stdlib.h>int main(){    int arr[10] = { 1 };    int i = 0;    int *p_arr = arr;    for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)    {        *(p_arr + i) = i;    }    for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)    {        printf("%d ",*(p_arr+i));    }    system("pause");    return 0;}//5.解析二维数组的创建和初始化//数组的创建int arr[3][4];//整型char arr[3][4];//字符型double arr[2][4];//双精度浮点型//数组初始化int arr[3][4] = { 1, 2, 3, 4 };int arr[3][4] = { { 1, 2 }, { 3, 4 } };int arr[][4] = { { 1, 2 }, { 3, 4 } };//6.二维数组的使用#include <stdio.h>#include <stdlib.h>int main(){    int arr[3][4] = { 0 };    int i = 0;    for (i = 0; i < 3; i++)    {        int j = 0;        for (j = 0; j < 4; j++)        {            arr[i][j] = i * 4 + j;        }    }    for (i = 0; i < 3; i++)    {        int j = 0;        for (j = 0; j < 4; j++)        {            printf("%d ", arr[i][j]);        }        printf("\n");    }    system("pause");    return 0;}//7.二维数组的存储#include <stdio.h>#include <stdlib.h>int main(){    int arr[3][4];    int i = 0;    for (i = 0; i < 3; i++)    {        int j = 0;        for (j = 0; j < 4; j++)        {            printf("&arr[%d][%d] = %p\n", i, j, &arr[i][j]);        }    }    system("pause");    return 0;}//输出结果![这里写图片描述](http://img.blog.csdn.net/20170719165651181?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvR3VpanVuNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)//8.二维数组的指针访问#include <stdio.h>#include <stdlib.h>int main(){    int arr[3][4] = { 1 };    int *p = &arr[0][0];    int i = 0;    for (i = 0; i < 3 * 4; i++)    {        printf("%d ", *(p + i));    }    printf("\n");    for (i = 0; i < 3; i++)    {        int j = 0;        for (j = 0; j < 4; j++)        {            printf("%d ", arr[i][j]);        }    }    system("pause");    return 0;}//比较这两个输出结果![这里写图片描述](http://img.blog.csdn.net/20170719175648743?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvR3VpanVuNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)//9.有关数组的运算//一维数组#include <stdio.h>#include <stdlib.h>int main(){    int a[] = { 1, 2, 3, 4 };    printf("%d\n", sizeof(a));//16    printf("%d\n", sizeof(a + 0));//4    printf("%d\n", sizeof(*a));//4    printf("%d\n", sizeof(a + 1));//4    printf("%d\n", sizeof(a[1]));//4    printf("%d\n", sizeof(&a));//4    printf("%d\n", sizeof(&a + 1))//4;    printf("%d\n", sizeof(&a[0]));//4    printf("%d\n", sizeof(&a[0] + 1));//4    system("pause");    return 0;}//二维数组#include <stdio.h>#include <stdlib.h>int main(){    int a[3][4] = { 0 };    printf("%d\n", sizeof(a));//48    printf("%d\n", sizeof(&a));//4    printf("%d\n", sizeof(a[0][0]));//4    printf("%d\n", sizeof(a[0]));//16    printf("%d\n", sizeof(a[0] + 1));//4    printf("%d\n", sizeof(a + 1));//4    printf("%d\n", sizeof(&a[0] + 1));//4    printf("%d\n", sizeof(*a));//16    printf("%d\n", sizeof(a[3]));//16    system("pause");    return 0;}//总结//数组名代表整个数组的时候只有两种情况//sizeof(数组名),这里的数组名表示整个数组。//&数组名,这里的数组名表示整个数组。
原创粉丝点击