C语言中指针和数组是怎样相互转换的
指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。
(1)指针数组:它实际上是一个数组,数组的每个元素存放的是一个指针类型的元素。
地址是可以用加减运算符的,比如a+1就相当于&a[1],即a[1]的地址,a+2就相当于&a[2],即a[2]的地址。同样指针也是可以用加减运算符的,如果p是一个指针指向数组a的首地址&a[0],p++后,p就指向a[1]。
指针:系统为某一个变量开辟单元格,指针便指向此单元格的变量值。数组:系统为某一组数开辟一组单元格,数组首地址便是你定义的数组变量名。数组和指针的唯一区别是,不能改变数组名称指向的地址。
c语言数组不可以当成指针使用,但是指针可以当成数组使用吗?
num这个指针没移动,于是取的是数组的第一个。
可以又不可以。指针式可以作为左值的,数组名则不能。
数组必须是连续空间,并且空间长度受限,而指针可以指向任意空间,并且可以用指针挂载无数个结点,数组是无法代替指针的。C语言就是个玩指针的游戏,楼主还是要把指针学好啊。
NULL指针,只是一个方便的指针,表示不指向任何对象。真正有用的还是指向具体对象的指针。
C语言:简述一下“数组和指针的关系”?
指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。
数组是用指针方式实现的,但数组值是一个常量,即不能改变数组的首地址,而指针是一个变量,可以改变它的值;如:数组 a和指针p,p=a+1;是合法的,但a=a+1;是不合法的。
指针:系统为某一个变量开辟单元格,指针便指向此单元格的变量值。数组:系统为某一组数开辟一组单元格,数组首地址便是你定义的数组变量名。数组和指针的唯一区别是,不能改变数组名称指向的地址。
指针数组:就是一个由指针组成的数组,那个数组的各个元素都是指针,指向某个内存地址。 char *p[10];//p是一个指针数组数组指针:数组名本身就是一个指针,指向数组的首地址。注意这是一个常数。
数组指针,数组名就是一个指向数组起始地址的指针,数组下标是萦引,比如num[0],他就相当于num+0;num这个指针没移动,于是取的是数组的第一个。
C语言中,指针和数组的区别和联系?
数组是用指针方式实现的,但数组值是一个常量,即不能改变数组的首地址,而指针是一个变量,可以改变它的值;如:数组 a和指针p,p=a+1;是合法的,但a=a+1;是不合法的。
指针:指针很灵活,它可以指向任意类型的数据。指针的类型说明了它所指向地址空间的内存。指针:由于指针本身就是一个变量,再加上它所存放的也是变量,所以指针的存储空间不能确定。
指针:系统为某一个变量开辟单元格,指针便指向此单元格的变量值。数组:系统为某一组数开辟一组单元格,数组首地址便是你定义的数组变量名。数组和指针的唯一区别是,不能改变数组名称指向的地址。
该指针指向的内存区就是数组第0号单元,该指针自己占有单独的内存区,注意它和数组第0号单元占据的内存区是不同的。该指针的值是不能修改的,即类似array++的表达式是错误的。
指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。
求c语言指针用法,以及与数组的区别
指针是指向一个地址,该地址存储具体的数据,指针如果没有赋值指向一个地址时,相关数据没有意义。数组是一个地址开头的系列数据存储区。
数组是用指针方式实现的,但数组值是一个常量,即不能改变数组的首地址,而指针是一个变量,可以改变它的值;如:数组 a和指针p,p=a+1;是合法的,但a=a+1;是不合法的。
数组名本质上就是个指针,也就是地址,但是它是一个常指针,是个固定值,而指针是是指针变量的简称,是个变量,这个变量存放的是地址值,它的值是可以改变的。