记得研究生面试时,导师问过我数组和指针的不同,我没答上,十分紧张。后来专门查了一些资料,部分弄清了不同,但直到今天看了《C专家编程》,才对这两者的不同有了更深的了解。
指针有一个让人感到迷惑的性质,他存储的是一个地址,而自身又有一个地址,因此产生了“地址Y”和“地址Y的内容”之间的区别。编译器通过上下文来判断Y的具体含义,以下面这个赋值语句为例):
X = Y;
在这个上下文环境里,X是左值,含义是”X所代表的地址“。左值在编译时可知,表示存储结果的地方。Y是右值,含义是”Y所代表的地址的内容“。右值只有在运行时才能直到,如无特殊说明,右值表示”Y的内容“。
C语言中引入了”可修改的左值“这个属于。它表示左值允许出现在赋值语句的左边。这个奇怪的术语是为了与数组名区分,数组名也用于确定对象在内存中的位置,也是左值,但它不能作为赋值的对象。因此,数组名是个左值但不是可修改的左值。标准规定赋值符必须用可修改的左值作为它左边一侧的操作数。用通俗的话说,只能给可修改的东西赋值。
指 针
数 组
保存数据的地址
|
保存数据
|
间接访问数据,首先取得指针的内容,把它作为地址,然后从这个地址获取数据。
如果指针有一个下标[I],就把指针的内容加上I作为地址,从中提取数据。
|
直接访问数据,a[I]只是简单地以a+I为地址取得数据。
|
通常用于动态数据结构
|
通常用于存储固定数目且数据类型相同的元素。
|
相关函数为malloc(),free()。
|
隐式分配和删除
|
通常指向匿名数据
|
自身即为数据
|
参考:《C专家编程》
分享到:
相关推荐
数组和指针练习题目(精选) 在编程语言中,数组和指针是非常重要的概念,它们的应用非常广泛,理解基础是非常必要的。本节将通过多种练习题目来加深对数组和指针的理解。 指针基础 指针是一种特殊的变量,它可以...
本文旨在澄清关于数组名是否等同于指针这一常见的误区,并通过具体的代码示例来深入探讨数组和指针之间的关系及其差异。 #### 二、数组与指针的基本概念 1. **数组**: - 数组是一系列相同类型的数据项的集合。 ...
虽然数组和指针有相似之处,但在实际编程中需要注意以下几点: - **类型安全**:在使用指针时应确保指针的类型与所指向的数据类型一致,避免类型不匹配导致的问题。 - **内存泄漏**:使用动态内存分配时要注意及时...
10 数组和指针.pdf
《数组与指针的艺术》是一篇深度探讨C/C++中数组和指针特性的文章,旨在帮助读者理解和掌握这两种核心概念。文章指出,数组和指针是C/C++语言的灵魂,它们提供了对底层操作的强大支持,是语言效率的保证。然而,由于...
在编程世界中,数组和指针是C/C++等低级语言的核心概念,它们的理解与熟练运用对于程序设计至关重要。本学习资料集包含了对数组和指针的深度解析,旨在帮助学习者彻底掌握这两个概念。 首先,我们来深入探讨数组。...
**多维数组指针:** ```c int (*p)[3]; // p是指向含有3个整型元素数组的指针 int (*p)[3] = &a; // 将数组a的地址赋给p ``` **函数指针:** 函数指针是一种特殊的指针类型,它可以存储函数的地址。 ```c int add...
在C语言中,数组和指针是两个非常重要的概念,它们之间既有明显的区别,也有紧密的联系。数组是一种数据结构,而指针则是一种特殊的数据类型,用于存储内存地址。理解这两者的差异和关联对于深入学习C语言至关重要。...
数组的指针和指向数组的指针变量 数组的指针和指向数组的指针变量是编程语言中一个重要的概念。数组的指针是指向数组在内存中的起始地址,而指向数组的指针变量是指向数组元素的指针变量。 概念: * 数组的指针:...
在编程中,数组和指针是两种非常基础且重要的概念,它们在处理数据时起着核心作用。数组是一组相同类型的元素的集合,通过索引来访问每个元素。指针则是一个变量,它存储的是内存地址,这个地址通常指向一个变量或...
### C++程序设计语言中数组和指针的探讨 #### 一、引言 在C++编程语言中,数组和指针是两个重要的基础概念,它们不仅被广泛应用于各种编程场景,也是理解更复杂数据结构(如链表、树、图等)的基础。正确理解和运用...
总的来说,理解和熟练运用数组指针是掌握C语言的关键技能之一。它不仅能够帮助我们更有效地操作数组,还能在编写高效的代码时发挥重要作用。在深入学习C语言指针时,还会涉及到二级指针、指针数组、字符串指针、函数...
在C语言中,数组和指针是编程时非常重要的概念,尤其在处理大量数据或实现高效算法时。在第四章“数组和指针”中,我们主要探讨了以下几个知识点: 1. **数组的概念**: 数组是一组相同类型的变量,它们按照下标...
浅议C语言中数组和指针的互操作浅议C语言中数组和指针的互操作浅议C语言中数组和指针的互操作浅议C语言中数组和指针的互操作
在编程领域,数组和指针是C/C++等低级语言中的核心概念,它们在程序设计中扮演着至关重要的角色。数组是一种数据结构,可以存储同类型的数据集合,而指针则是存储内存地址的变量,它能够间接访问和操作数组元素。本...
在C++中,一维数组和指针之间存在着密切的关系。本文将从不同角度对这一关系进行详细解释,并通过实例代码帮助理解。 #### 数组名作为地址 首先,我们需要明确的是,在C++中,数组的名字实际上就是该数组第一个...
在深入探讨之前,首先要明确指针和数组的基本定义。 指针,按照C/C++标准,是一种类型,它可以表示对内存中某个实体的引用。指针类型由"pointer to"和它所指向的类型组成,如"pointer to int"(int*)。指针可以...