简述C语言中数组和指针的区别。相关知识点: 试题来源: 解析 答案:数组是一种数据结构,用于存储相同类型的元素,可以通过下标访问元素。指针是一种变量,存储了另一个变量的内存地址。数组名可以作为指向数组首元素的指针使用,但数组本身并不是指针。指针可以被重新赋值,指向不同的内存地址,而数组的大小和内容在定义后...
这两者的主要区别在于:数组名代表数组开始的内存位置,而指针可以指向任何数据类型的任何内存位置;数组的大小是固定的,一旦声明,不能改变,而指针的指向可以改变,指向不同的内存地址;数组名是一个常量,不能赋值,而指针是一个变量,可以进行赋值操作。 数组的固定大小特性是其定义的一部分。当你声明一个数组时,C语言编...
由此可见,C语言对数组的处理,实际上是转换成指针地址的运算。 数组与指针暗中结合在一起。因此,任何能由下标完成的操作,都可以用指针来实现,一个不带下标的数组名就是一个指向该数组的指针。 4.指针与多维数组 用指针变量可以指向一维数组,也可以指向多维数组。但在概念上和使用上,多维数组的指针比一维数组的指针...
(3)指针用于动态结构数据,而数组用于存储固定数目且数据类型相同的元素。 (4)指针相关的函数有malloc与free,而数组隐式分配和删除。 (5)指针一般指向匿名数据,而数组自身即为数据名。 指针和数组都可以通过定义时使用字符串常量进行初始化,但是两者是有区别的: 在ANSI C中,初始化指针时所创建的字符串常量通常是只...
1、数组名不是指针 我们先来推翻"数组名就是指针"的说法,用反证法。 证明 数组名不是指针 假设:数组名是指针; 则:pStr和str都是指针; 因为:在WIN32平台下,指针长度为4; 所以:第6行和第7行的输出都应该为4; 实际情况是:第6行输出10,第7行输出4; ...
指针用于存储动态分配的数组的地址,以及用于作为参数传递给函数的数组。在其他情况下,数组和指针是两个不同的东西,请参见以下程序以证明此语句的合理性。 sizeof运算符的行为 C C ++ 输出:arr []的大小24 ptr …
C语言的编译器 方法/步骤 1 数组名是个指针常量,保存的是数组的首地址,即“数组第一个元素的起始地址”,为什么这么说呢?因为数组的元素可能是整形,字符型,假如是整形,那么一个元素占4个字节,而每个字节都对应一个地址,那么数组名保存的地址是哪个呢?是第一个元素的第一个字节的地址。2 既然数组名是...
区别:C语言把内存划分成四个区,它把一般的变量和数组等存在于内存中的栈区,所以数组在C语言的定义中只是一组同类型的普通变量,即使这个变量有可能是指针。所以他的作用比指针小的很多,而指针可以指向任何区的任何数据,所以就会觉得指针和数组名很像,但是必须要注意的是,数组名只是指针中的一种,...
1,指针变量用于保存数据的地址,数组用于直接保存数据(当然你可能见过,数组的每个元素是指针,不过,一组指针也是数据,它们各自的内容才是地址)2,访问方式:指针是间接访问,首先取得指针的内容作为地址,再去该地址访问数据;数组是直接访问,数组名即是地址 3,指针通常用于动态数据;数组通常用于固定...
c语言中使用指针和数组下标访问元素,表面上看两者意义相同,但在编译器处理上可能有所不同。例如,a[2]与*(a+2)在语法上等价,但a[2]是一种固定写法,编译器对此有固定的处理机制,而*(a+2)则需要先计算a+2的地址,这在语法上是合理的,但在实际编译过程中,可能需要额外的步骤来计算地址,...