• 7、C语言中一维数组名与一般指针变量的相似与区别(同理多维)


    #include <stdio.h>
    #include <stdlib.h>
    #define MAXSIZE 10
    //数组名与一般指针变量的区别
    //数组名作为形参,(该数组名仅仅是一个普通的指针变量,不具有常量特性(可自增,自减),也不代表一个数据类型。),但是不影响实参,形参不改变实参的指向。
    void fun1(int array[],int length)//和普通指针变量完全一样,所以避免混淆,最好使用指针变量作为形参。
    {
        int i=0;
        printf("形参数组名:sizeof(array)=%d\n",sizeof(array));
        for(;i<length;i++,array++)
        {
            (*array)++;
        }
    }
    int main()
    {
        int arr[MAXSIZE]={0,1,2,3,4,5,6,7,8,9};
        int i=0;
        int *p=arr;//p arr代表的都是数组的首地址。不过有区别
        printf("数组名:sizeof(arr)=%d,指针变量名:sizeof(p)=%d\n",sizeof(arr),sizeof(p));//sizeof是一个操作符,返回一个数据类型所占的字节数。数组是一个数据类型.
        //一般的数组名具有常量特性(数组名不是指针,但是值确实是一段地址的首地址),非左值,不能自加自减,同时也代表一种数据类型。
        printf("调用函数以前:\n");
        printf("实参数组名:arr=%d,sizeof(arr)=%d\n",arr,sizeof(arr));
        printf("实参指针变量名:p=%d,sizeof(p)=%d\n",p,sizeof(p));
    
    for(;i<MAXSIZE;i++)
        {
            if(i%5==0&&i!=0)
            {
                printf("\n");
            }
            printf("arr[i]=%d,",arr[i]);
        }
        fun1(arr,MAXSIZE);//实参利用数组名
        fun1(p,MAXSIZE);
        printf("调用函数以后:\n");
        printf("实参数组名:arr=%d,sizeof(arr)=%d\n",arr,sizeof(arr));
        printf("实参指针变量名:p=%d,sizeof(p)=%d\n",p,sizeof(p));
        for(i=0;i<MAXSIZE;i++)
        {
            if(i%5==0&&i!=0)
            {
                printf("\n");
            }
            printf("arr[i]=%d,",arr[i]);
        }
        printf("\b \n");
        return 0;
    }
    


    程序运行结果:
    数组名:sizeof(arr)=40,指针变量名:sizeof(p)=4
    调用函数以前:

    arr[i]=1,arr[i]=2,arr[i]=3,arr[i]=4,arr[i]=5,
    arr[i]=6,arr[i]=7,arr[i]=8,arr[i]=9,arr[i]=10

    实参数组名:arr=2686688,sizeof(arr)=40
    实参指针变量名:p=2686688,sizeof(p)=4
    形参数组名:sizeof(array)=4
    形参数组名:sizeof(array)=4
    调用函数以后:
    实参数组名:arr=2686688,sizeof(arr)=40
    实参指针变量名:p=2686688,sizeof(p)=4
    arr[i]=2,arr[i]=3,arr[i]=4,arr[i]=5,arr[i]=6,
    arr[i]=7,arr[i]=8,arr[i]=9,arr[i]=10,arr[i]=11

    Process returned 0 (0x0)   execution time : 0.604 s
    Press any key to continue.

  • 相关阅读:
    前端学PHP之语句
    前端学PHP之运算符
    ASP.NET MVC的TextBoxFor()和TextBox()
    在_Layout模版中使用@Styles.Render()没有效果
    使用HTML.ActionLink实现一个图片链接
    微软最有价值专家大中华峰会花絮视频
    激活当前视图菜单高亮呈现
    获取当前视图名
    Razor语法中链接的一些方法
    Razor语法的一些特殊需求输出
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3122869.html
Copyright © 2020-2023  润新知