一、声明与定义
1、C语言中的对象必须有且只有一个定义,但它可以有多个extern声明。
2、声明和定义的区别
定义 |
只能出现在一个地方 |
确定对象的类型并分配内存,用于创建新的对象。 |
声明 |
可以出现多次 |
描述对象的类型,用于指代其他地方定义的对象。 |
二、数组和指针
1、数组指针并不完全相同。
2、数组和指针的区别
指针 |
数组 |
保存数据的地址 |
保存数据 |
间接访问数据,首先取得指针的内容,把它作为地址,然后从这个地址提取数据。如果指针下有一个[I],就把指针的内容加上I作为地址,从中提取数据。 |
直接访问数据,a[I]只是简单地以a+I作为地址取得数据。 |
通常用于动态数据结构。 |
通常用于存储固定数目且数据类型相同的元素。 |
相关的函数为malloc()、free()分配内存。 |
隐式分配和删除 |
通常指向数据 |
自身即为数据名 |
定义指针时编译器并不为指针所指向的对象分配空间,它只是分配指针本身的空间。除非对指针进行初始化(只有字符串常量才可以如此)且所指的对象是只读的。 |
由字符串常量初始化的数组可以修改。 |