C语言中数组名的理解

来源:互联网 发布:数据库不能附加 编辑:程序博客网 时间:2024/05/16 12:59

C语言中数组名的理解

数组名并不能当做一个变量,可以认为它只是一种简记缩写(当然是被编译器认可的一种简记缩写),
而且在不同的运用环境中,数组名的含义不尽相同。如下代码中:

#include<stdio.h>

#include<stdlib.h>

 

void func1(intoneDimeArray[])

{

    printf("oneDimeArray代表的地址为:%p\n",oneDimeArray);

    printf("oneDimeArray+1代表的地址为:%p\n",oneDimeArray+1);

    return;

}

 

void func2(inttwoDimeArray[][3])

{

    printf("twoDimeArray代表的地址为:%p\n",twoDimeArray);

    printf("twoDimeArray+1代表的地址为:%p\n",twoDimeArray + 1);

    return;

}

 

void main()

{

    int oneDimeArray[3] = { 1, 2, 3 };

    int twoDimeArray[2][3] = { {0,0,0},{2,3,4} };

 

    int  *p1 =oneDimeArray;//oneDimeArray代表的是&oneDimeArray[0];

    *(oneDimeArray+ 1) = 100;//oneDimeArray代表的是&oneDimeArray[0];

    int (*p2)[3] = &oneDimeArray;//oneDimeArray代表的是整个数组;

    int length1 = sizeof(oneDimeArray);//oneDimeArray代表的是整个数组;


    int(*p3)[3] = twoDimeArray;//twoDimeArray代表的是&twoDimeArray[0]

    //上一条语句等价于 int(*p3)[3] = &twoDimeArray[0];

    int(*p4)[2][3] = &twoDimeArray;//twoDimeArray代表的是整个二维数组

    int length2 = sizeof(twoDimeArray);//twoDimeArray代表的是整个二维数组;

 

    func1(oneDimeArray);//oneDimeArray代表的是&oneDimeArray[0];

    func2(twoDimeArray);//twoDimeArray代表的是&twoDimeArray[0]


    printf("length1 = %d\n", length1);

    printf("length2 = %d\n", length2);

}


运行结果为:

oneDimeArray代表的地址为:0038F734
oneDimeArray代表的地址为:0038F734
oneDimeArray+1代表的地址为:0038F738
twoDimeArray代表的地址为:0038F714
twoDimeArray代表的地址为:0038F714
twoDimeArray+1代表的地址为:0038F720
length1 = 12
length2 = 24

原创粉丝点击