C语言之指针、数组和函数

C语言之指针、数组和函数

基本解释

1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。

2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。

3、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。

问题:指针与数组

听说char a[]与char *a是一致的,是不是这样呢?

答案与分析:

指针和数组存在着一些本质的区别。当然,在某种情况下,比如数组作为函数的参数进行传递时,由于该数组自动退化为同类型的指针,所以在函数内部,作为函数参数传递进来的指针与数组确实具有一定的一致性,但这只是一种比较特殊的情况而已,在本质上,两者是有区别的。请看以下的例子:

char a[] = "Hi, pig!";

char *p = "Hi, pig!";

上述两个变量的内存布局分别如下:

你可能喜欢

  • 概率论与数理统计实验报告
  • 圆周率1000位
  • 资料分析秒杀技巧
  • 数据分析方法
  • 新手上路
  • 美赛数学建模
  • 空间直角坐标
  • 中学生物学

C语言之指针、数组和函数相关文档

最新文档

返回顶部