您的位置:首页 > 编程语言 > C语言/C++

C语言中的声明和定义

2015-08-15 12:24 337 查看
1,声明:相当于普通的声明,它所说明的并非自身,而是描述其他地方创建的对象,没有分配内存空间。

    比如:int a[];声明一个整型数组。在其他地方可以创建该类型的对象,a可以被重新赋值。

2, 定义:相当于特殊的声明,它为对象分配内存空间。

   比如:int a[100];定义一个整型数组,大小为100,并为其分配100个整型类型大小的字节数。

3,对于指针和数组来说,如果声明一个外部字符指针变量 extern char *p,却在别处定义为数组 char p[10],

    那么在访问p[i]内容时,会将p[i]的内容即字符解释为地址,因为p被声明为一个指针,其值是地址。这是错误的。

4,当p声明为指针,只有p定义为指针时,对p所指向的内容的引用才是正确的。

5,当p定义为指针,但以数组方式引用时,其本质是数组的直接访问和指针的间接访问的组合。

        例1 char*p="abcdefg";p[3];

       p[3]以数组方式引用,其运行步骤如下:

      (1):编译器会告知变量符号p的地址,

      (2):从p的地址(左值)中得到指针,即p的值(右值)。

      (3):将p的值加上偏移量3,得到一个地址,这个地址是指向p[3]内容的地址。

      (4):从该地址中取得字符d。

6,当定义为数组,以数组方式引用时,

        例2  char p[]="abcdefg";p[3]

     p[3] 以数组方式引用时,其运行步骤如下:

     (1):编译器会给变量p分配一个地址。

     (2):将该地址加上偏移量3,得到新的地址。

     (3):从该新的地址中取得内容,即字符d。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: