c语言指针与数组,怎么联系起来?

作者&投稿:干洋 (若有异议请与网页底部的电邮联系)
C语言 指针数组的问题~

用char *str[3]={"abcd","efgi","jklm"}定义的str[3]是3个char*型指针并被初始化为指向3个字符串常量。注意是字符串“常量”,所以你想用 *str[1]='E';和 *str[2]='J';把其中的第一个小写字母改写成大写是不可以的,因为常量字符串是不允许写操作的。但指针不是常指针,可以指向别处,你写成
str[1]=“Efgi";和str[2]=“Jklm";试试,让指针指向另外的常量字符串应该是可以的……

区别:C语言把内存划分成四个区,它把一般的变量和数组等存在于内存中的栈区,所以数组在C语言的定义中只是一组同类型的普通变量,即使这个变量有可能是指针。所以他的作用比指针小的很多,而指针可以指向任何区的任何数据,所以就会觉得指针和数组名很像,但是必须要注意的是,数组名只是指针中的一种,它是指针中只指向栈区的且指针的移动范围是有限的,即数组长度。而且数组在定义之初就已经有了自己的内存,一般的指针如果未指向某一个内存块时,它是没有自己的内存的,即所谓的野指针。
联系:如上面所说,数组只是定义在栈区的一个连续变量,它的首地址就是一个指针。
总结:不仅数组有指针,所有变量都有指针,指针说白了就是内存中的地址,就像一个房间必须有一个房间号。在C/C++语言中定义一个指针,就是在栈区开辟一个内存空间用来存放它指向的内存地址,然后给指针赋值,就是把地址值赋值给刚才开辟的内存空间,然后通过访问该内存中的地址值来间接访问该地址下存放的数据。如果该地址值指向的是一块静态存储区,如字符串常量等,当然就不可以修改指向的内容啦。

经验之谈,楼楼加分啊

1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。
2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。
3、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。

数组名就是一个指向该数组第一个元素的指针,比如对于 int a[10],*p,可以这样把两者联系起来:
p=a或者p=&a[0],两者是等价的。此外,在p=a的前途下,a[i]==*(p+i)

数组就是指针常量,在不涉及到修改指针变身的值的情况下,两者可以通用。


c语言数组和指针的区别
总的来说,C语言中的数组和指针虽然有一定的联系,但它们在本质上是不同的。数组是固定长度的数据结构,其名称代表首元素的常量地址;而指针是变量,其值可以被修改以指向不同的内存地址。

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

c语言中的数组和指针有什么区别
数组和指针在操作方式上也有所不同。数组是通过索引来访问其元素的,这是一种直接访问方式,效率较高。而指针则需要通过解引用来访问其指向的值,这增加了一层间接性。此外,由于指针可以动态地改变其指向的地址,因此在使用指针时需要更加小心,以避免出现野指针、空指针解引用等错误。总的来说,数组...

c语言中的数组和指针有什么区别
C语言中的数组和指针是两个不同的概念,它们在多个方面存在显著差异。首先,数组是一种数据结构,用于存储固定数量的同类型元素的连续内存块。数组名在大多数上下文中代表数组首元素的地址,这个地址可以赋值给一个指针变量。然而,在取地址操作或sizeof操作符等特定上下文中,数组名则代表整个数组。指针则...

c语言指针与数组,怎么联系起来?
1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。

C语言中,指针和数组的区别和联系?
区别:C语言把内存划分成四个区,它把一般的变量和数组等存在于内存中的栈区,所以数组在C语言的定义中只是一组同类型的普通变量,即使这个变量有可能是指针。所以他的作用比指针小的很多,而指针可以指向任何区的任何数据,所以就会觉得指针和数组名很像,但是必须要注意的是,数组名只是指针中的一种,...

C语言中,数组和指针定义在内存方面的区别在哪?
1,指针变量用于保存数据的地址,数组用于直接保存数据(当然你可能见过,数组的每个元素是指针,不过,一组指针也是数据,它们各自的内容才是地址)2,访问方式:指针是间接访问,首先取得指针的内容作为地址,再去该地址访问数据;数组是直接访问,数组名即是地址 3,指针通常用于动态数据;数组通常用于固定...

c语言指针数组和数组指针的区别
对指针数组来说,首先它是一个数组,数组的元素都是指针,也就是说该数组存储的是指针,数组占多少个字节由数组本身决定;而对数组指针来说,首先它是一个指针,它指向一个数组,也就是说它是指向数组的指针,在 32 位系统下永远占 4 字节,至于它指向的数组占多少字节,这个不能够确定,要看具体...

C语言指针数组指针怎样理解?
指针数组,指数组元素就是指针 数组指针,对于一维数组来说就是数组名 故对于一维数组来说,数组名是第一个元素的指针,而元素本身也是指针,故数组名是指向指针的指针。例如: int * p = &a; int ** q = &p;则p中储存的是整形变量a的地址,而指针p自身也是变量(指针变量通常占4个字节),故...

C语言:简述一下“数组和指针的关系”?
数组:数组传参时,会退化为指针,所以我们先来看看什么是退化!(1)退化的意义:C语言只会以值拷贝的方式传递参数,参数传递时,如果只拷贝整个数组,效率会大大降低,并且在参数位于栈上,太大的数组拷贝将会导致栈溢出。(2)因此,C语言将数组的传参进行了退化。将整个数组拷贝一份传入函数时,将...

利津县13333235740: c语言指针与数组,怎么联系起来? -
彭斩君福: 数组就是指针常量,在不涉及到修改指针变身的值的情况下,两者可以通用....

利津县13333235740: c语言指针与数组,怎么联系起来? -
彭斩君福: 1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量.2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变.指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存.3、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针.

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

利津县13333235740: C语言(数组与指针的关系) -
彭斩君福: printf("%d\n",num);输出二维数组首地址,也就是首行的地址num+0 printf("%d\n",*num);输出的*num就是*(num+0)+0,首行首元素的地址 你还可以printf("%d\n",&num[0][0]);输出的也是*(num+0)+0,是首行首元素的地址值当然是一样的

利津县13333235740: C语言里数组和指针有什么关系? -
彭斩君福: C里面数组名字就是数组这一块内存空间的指针. 比如 int a[10], 你可以通过a[0]来访问数组里面的第一个元素,也可以使用*a,这类似于 int *a类型的数组.

利津县13333235740: C语言中指针与数组有什么关系 -
彭斩君福: c语言中数组和参数可以通用,数组有一个基址,c中用指针指向它,计算数组元素地址的时候,是基址+元素字节数*(元素序号-1).

利津县13333235740: 求求高手指教,c语言中,用指针怎样将2个数组联接起来呢? -
彭斩君福: 是不是这个意思啊,两个数组当成一个数组使用吗?前半部分是A数组,后半部分是B数组 char A[N],B[M];//point是当前需要操作的第几个字符啊,如果point小于N则操作A字符串数组,如果大于N小于M+N,则操作B数组,如果大于M+N则出错,char Function(int point,char* pdata) { char *p; if(point>(M+N)) { return FAIL; } if(point>M) { *pdata=B[point-N]; return SUCCESS; } *pdata=A[point]; return SUCCESS; }

利津县13333235740: C语言数组下标和指针的关系 -
彭斩君福: 数组和指针的区别: 数组名确实表示指向数组首地址的指针,但这个指针很特别,它的值(指针的值指的是指针所指的地址)不能被改写,能改写的仅仅是其指向的内容,换句话说,数组名只能指向数组的首地址,如果有数组char a[];那么如...

利津县13333235740: c语言中如何通过二级指针来操作二维数组 -
彭斩君福: 1、首先我们打开电脑里的C语言软件,新建一个工程和.c文件,输入头文件和主函数. 2、然后我们输入图示代码初始化数组,定义变量类型. 3、然后我们输入图示代码用for语句实现数组的访问. 4、然后我们输入图示代码进行输出. 5、然后我们输入图示代码编译、运行,即可通过二级指针来操作二维数组.

利津县13333235740: C语言中指针型和数组关系是什么?谁能给个通熟易懂的解释.最好能举个例子. -
彭斩君福: 指针用来指向内存存储单元的地址,注意是地址而不是内容,你可以将它想象成门牌号. 对于数组和指针的关系,看个例子: int a[5]={1,2,3,4,5}; int *p; /* “p”是变量名,“*p”表示它是一个指针变量,其值为某内存单元的地址 */ p=a; 这里指针p被指向数组a的首地址,即a[0],我们可以通过制定下标来获取数组a里的值,比如a[1],也可以动过移动指针来获取a里的值,如p++,两者等效. 你也可以将指针直接指向数组中的某个元素,如:p=&a[3],或者另一种表达方式:*p=a[3]

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