C语言指针数组的作用

作者&投稿:颛宗 (若有异议请与网页底部的电邮联系)
C语言指针的作用有哪些?~


所谓数组,是有序的元素序列。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。这些无序排列的同类数据元素的集合称为数组。
比如油烟机的风扇转速会和工作的模式之间有一定的关系,那么我们就可以把它的工作模式和一维数组的下标对应起来,我们将具体的转速放在数组中,这样的话就非常方便我们在日后查询。
再比如说家中的冷暖灯光控制这方面,色温灯里会有两个灯珠,分别对应的是冷光和暖光,选择不同的模式灯光的颜色就不同,我们就可以将这两种灯光的亮度pwm值事先放在二维数组中,以便调用调光。
在程序中合理地使用数组,会使程序的结构比较整齐,而且可以把较为复杂的运算,转化成简单的数组来表示。

扩展资料:
一、使用规则:
1、可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。
2、只能给元素逐个赋值,不能给数组整体赋值。
(请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。)
3、若不给可初始化的数组赋初值,则全部元素均为0值。
4、假如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。
动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。
二、表示方法:
数组元素是组成数组的基本单元。
数组元素也是一种变量, 其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素的一般形式为:数组名[下标] 其中的下标只能为整型常量或整型表达式。
如为小数时,C编译将自动取整。例如,a[5],a[i+j],a[i++]都是合法的数组元素。数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。在C语言中只能逐个地使用下标变量, 而不能一次引用整个数组。
参考资料:百度百科-数组

指针数组:数组成员是指针的数组。

作用:数组的属性全有。因为成员是指针,这就可以延伸出很多内容。包括:

  1. 成员是函数指针,整个数组就是一类相关函数的集合,便于代码架构的管理。

  2. 成员是链表指针啦,char指针,这种就是能做出类似散列表的结构。

总体来讲,就是一组相关数据的指针的集合,达到的目的就是搜集指向相关数据的指针放到一个集合里面。



int a[][] 与int(*a)[]等价的
例如int a[2][3]二维数组
int(*a)[]数组指针
二维数组就不说了很好理解
int(*a)[5] 这里a表示的意思就是 指向一个由5个整形数 组成的一维数组的指针

char *a[]与**a是等价的
char *a[]指针数组
**a指向指针的指针
例如可以这样用
char *a[]={"heool","good","word","great"};
char **b;
b=a;//这里的*b就相当于a[0]
更详细内容请参考谭浩强写的C语言的第九章 指针

*a[5]是一个指针数组相当于一个二维数组
a[0] djijekflj
a[1] ddiolqpq nv
a[2] uioekljspoi
a[3] iomspejfipel
a[4] ioullapapwm
其中的a[i]指示的是地址,

a[5]就是单纯的一维数组

以下程序在VS 2005调试通过,cout为C++语法,输出语句,同C的printf()
例:
#include<stdafx.h>
#include<iostream>
using namespace std;

int main()
{
int * a[5];//指针数组,这里数组有5个元素,每个元素都是一个指针
int b[5]={1,2,3,4,5};//普通数组,数组有5个元素,每个元素都是int型
a[0]=b;//把数组b的地址赋值给指针数组a的第一个元素(也就是a[0])
cout<<*a[0]<<*(a[0]+1)<<*(a[0]+2)<<*(a[0]+3)<<*(a[0]+4)<<endl;//输出12345
cout<<b[0]<<b[1]<<endl;//输出12
}
如果还不懂,可以Hi我。

*a[5]是一个指针数组相当于一个二维数组
a[0] djijekflj
a[1] ddiolqpq nv
a[2] uioekljspoi
a[3] iomspejfipel
a[4] ioullapapwm
其中的a[i]指示的是地址,

a[5]就是单纯的一维数组

可以这么理解*a[5],里面的元素可以表示为a 、a+1。。。


什么是指针数组
在C语言语言中,数组元素全为指针的数组称为指针数组。指针数组可以作为函数的参量使用,使用方式与普通数组类似。数组指针是指向数组首元素的地址的指针,其本质为指针,指针存放的是数组首地址的地址,相当于2级指针,这个指针不可移动。指针数组是数组元素为指针的数组,其本质为数组。指针数组常适用于指...

c语言中的数组和指针的区别
总的来说,数组是一种静态的数据结构,其大小和位置在程序运行期间是固定的;而指针则提供了一种动态访问内存的方式,可以在程序运行期间改变其指向。在C语言编程中,理解并正确使用数组和指针是非常重要的,它们不仅是数据访问和操作的基础,也是实现高级数据结构和算法的关键。

c语言数组和指针的区别
C语言中,数组和指针是两个不同的概念,它们之间存在显著的区别:定义与本质:数组是一种数据结构,用于存储固定数量的同类型元素的连续内存块。而指针是一个变量,其值是一个内存地址,用于指向内存中的某个位置。内存分配:数组在编译时分配内存空间,其大小在声明时确定且固定不变。指针本身只占用固定...

C语言指针数组的作用
指针数组:数组成员是指针的数组。作用:数组的属性全有。因为成员是指针,这就可以延伸出很多内容。包括:成员是函数指针,整个数组就是一类相关函数的集合,便于代码架构的管理。成员是链表指针啦,char指针,这种就是能做出类似散列表的结构。总体来讲,就是一组相关数据的指针的集合,达到的目的就是搜集...

c语言中的数组和指针有什么区别
总的来说,数组和指针在C语言中各自扮演着重要的角色。数组提供了一种静态、连续的数据存储方式,适用于固定大小的数据集合;而指针则提供了一种动态、灵活的内存访问机制,使得程序员能够在运行时动态地管理内存和数据结构。在实际编程中,根据具体需求和场景选择合适的数据结构是非常重要的。例如,在处理...

c语言数组和指针的区别
在C语言中,指针被广泛用于动态内存管理、函数参数传递、以及数据结构的实现等。例如,`int *p;`声明了一个指向整型的指针p,我们可以让它指向任何整型变量的地址,甚至可以通过改变p的值来让它指向不同的整型变量。数组和指针在某些情况下可以互换使用,比如在传递给函数作为参数时,数组名会退化为指向...

c语言中的数组和指针有什么区别
首先,数组是一种数据结构,用于存储固定数量的同类型元素的连续内存块。数组名在大多数上下文中代表数组首元素的地址,这个地址可以赋值给一个指针变量。然而,在取地址操作或sizeof操作符等特定上下文中,数组名则代表整个数组。指针则是一个变量,其值是一个内存地址,可以指向任何内存地址,包括变量、...

c语言中的数组和指针的区别
即此时数组名被当作指针处理。这使得在函数内部对数组的操作能够影响到原始数组。综上所述,C语言中的数组和指针在定义、内存管理、访问方式以及函数参数传递等方面都存在明显的区别。理解这些区别对于深入学习C语言以及编写高效、安全的C语言程序至关重要。

c语言什么时候使用数组,什么时候使用指针?
NULL指针,只是一个方便的指针,表示不指向任何对象。真正有用的还是指向具体对象的指针。如果定义了一个指针,使用时要让他指向一个具体对象,当需要他不指向什么对象的时候,给他赋值为NULL;PS:C语言,数组名只是一个指针常量而已,离开定义可见处,数组大小的信息就不存在了。只有定义完全可见的地方,...

C语言:简述一下“数组和指针的关系”?
一、概念 数组:数组是用于储存多个相同类型数据的集合。指针:指针相当于一个变量,但是它和不同变量不一样,它存放的是其它变量在内存中的地址。二、赋值、存储方式、求sizeof、初始化等 1.赋值 同类型指针变量可以相互赋值,数组不行,只能一个一个元素的赋值或拷贝 2.存储方式 数组:数组在内存中...

新城子区17127204760: C语言中的指针数组是什么意思?我对这个概念很混乱,指针数组的定义,作用,使 -
滕宇复方: 指针数组:就是存储指针的数组.数组指针:就是指向数组的指针.指针:本质就是一个int型变量,含义:一个内存地址.举例:int *p[10] 指针数组.原因:因为[的优先级比*高,p先和[结合,所以是指针数组.等同于int* p[10].int (*p)[10] 声明了一个指针P,指向有10个元素的数组.如果 int* p;就是声明了一个指向int变量的指针P.同理.int (*p)[10] 声明一个指向int[10]的数组.

新城子区17127204760: C语言指针数组的作用 -
滕宇复方: *a[5]是一个指针数组相当于一个二维数组 a[0] djijekflj a[1] ddiolqpq nv a[2] uioekljspoi a[3] iomspejfipel a[4] ioullapapwm 其中的a[i]指示的是地址, a[5]就是单纯的一维数组 可以这么理解*a[5],里面的元素可以表示为a 、a+1...

新城子区17127204760: C语言中 数组指针的意义 -
滕宇复方: 数组的操作:起始地址加偏移来访问具体区域 指针操作:当前地址直接寻址,地址操作可以实现++,--这样的操作,这种操作要比起始地址与偏移的加法更加节省时间(一般都有单周期指令与之配合),因此用指针访问数组中的数据要更加效率,适合处理像图像这样的大数据量对象.

新城子区17127204760: c语言中,指向一维数组的指针变量有什么用呢? -
滕宇复方: int *p; p是指向一个int类型的地址的指针,如果执行p+1那么它将移动一个int宽度的地址.int (*p)[4]; p是指向一个有4个元素的int数组的指针(相当于一个二维指针),如果执行p+1,那么它将移动4个int宽度的地址.*(*(p+n)+i)是把p当作一个二维指针进行解引用,它要访问的是score[n][i]元素,所以p+n移动了n个(4个int宽度)的地址,即移动到了第n行,*(p+n)取到了这一行的首地址,然后再加上i就移动到了这一行的第[i]个元素.

新城子区17127204760: 关于C语言数组指针的应用 -
滕宇复方: 应该会有的,这个叫行指针 它指向的数组是有10个元素的数组 int b[10],c[11]; int (*a)[10] = &b;//编译通过 int (*d)[10] = &c;//编译不通过

新城子区17127204760: C语言中为什么要使用指针访问数组元素? -
滕宇复方: 用指针有一些好处:可以再指针上直接进行计算 比如加减指针.另外当数组作为参数传递到函数中的时候,用指针是很方便的.其实数组的名字就是一个指针.有一本经典的书 《C专家...

新城子区17127204760: C语言程序设计中的指针的主要作用是什么? -
滕宇复方:指针简单的说就是地址.举个形象点的里子说,就好比门牌号. 大家都是按照门牌号访问每一家.对与门牌号的操作往往比对于每一家操作效率高多了. 这样如果我们要对调两家位置,如果两家搬家非常麻烦,那么我们直接给他把门牌号对换掉,那么和对调位置的效果也一样,而且效率要高很多. 所以,指针也是弱类型.

新城子区17127204760: C语言中指针有哪些用处.或者可以用来做什么,请简单举例说明 -
滕宇复方: 指针可以快速访问数组中的元素,想访问下一个,就自加1,上一个就自减1,下一行就自加一行,上一行就自减一行,特别适用快速逐点处理图像,如:unsigned char img[1024][768],*p; int i,j; p=(unsigned char *)img; for ( i=0;i<1024;i++) for ( j=0...

新城子区17127204760: C语言中,指针和数组的区别和联系? -
滕宇复方: 区别:C语言把内存划分成四个区,它把一般的变量和数组等存在于内存中的栈区,所以数组在C语言的定义中只是一组同类型的普通变量,即使这个变量有可能是指针.所以他的作用比指针小的很多,而指针可以指向任何区的任何数据,所以...

新城子区17127204760: 指针的作用是什么 -
滕宇复方: )指针的操作流程 申请并初始化或配置为空:int *pInt=NULL; 开辟空间或使其指向对象:pInt=new Int(3);或int i=3;pint=&i; 用指针(更确切地说是操作内存,在使用之前加if(pint!=NULL)或assert(pInt!=NULL)后再使用,以防内存申请失败的情况下使用指针): if(p!=NULL) {use pint}; 释放使用完的内存.free(pInt); 置指针为空pInt=NULL;(避免野指针的出现) (3) 在函数的参数传递中,编译器总是要为函数的每个参数制作临时副本,假如参数为p的话,那么编译器会产生p的副本_p,使_p=p; 假如函数体内的程式修

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网