首页 >> 大全

数组指针(数组指针的用法)

2023-01-25 大全 96 作者:考证青年

今天和大家分享一下关于数组指针的问题(数组指针的用法)。以下是边肖对这个问题的总结。让我们来看看。

首先,数组指针和指针数组的区别

二、指针数组和数组指针的区别

1。性质不同

指针数组:首先,它是一个数组,数组的元素都是指针,是“存储指针的数组”的缩写。数组指针:首先是指针,指向一个数组,是“指向数组的指针”的简称。

2。字节不同

数组占用多少字节是由数组本身的大小决定的。每个元素都是一个指针,任何类型的指针在32位系统中都将总是占据4个字节。

在32位系统中,数组指针总是占用4个字节。至于它所指向的数组占了多少字节,我不知道,但要看数组的大小。

3。不同的表示方法

指针数组:数组A中的所有元素都是int指针;数组指针:指向数组a的指针。

4。不同的变量

指针数组:指针数组可以说是“指针数组”,这个变量就是一个数组。

数组指针:数组指针可以说是“数组指针”,这个变量就是指针。

第三,数组指针是指针的数组吗?

没错。

数组指针是指向数组地址的指针,本质是指针;指针数组是元素为指针的数组(例如int *p[4],定义了三个指针:p[0],p[1],p[2],p[3]),其本质是一个数组。数组指针的使用在某些情况下类似于指针数组,所以要注意区别。

p是一个指针变量,指向一个包含四个int元素的一维数组。此时,P的增量是基于它所指向的一维数组的长度。

*(p+i)是一维数组a[i][0]的地址;*(p+2)+3表示a[2][3]的地址(之一行0,之一列0),*(p+2)+3)表示a[2][3]的值。

扩展数据:

只有以下四种类型的值可用于初始化或分配指针:

1.值为0的常量表达式,例如,值为0的整数const对象可以在编译时获得,也可以是0的文字常量。

2.具有匹配类型的对象的地址。

3.另一个对象末尾的下一个地址。

4.另一个相同类型的有效指针。

引用:

百度百科-指针数组

四、如何使用数组指针

可以这样来# # # int main(){char *d[4];d[0]=(1*(char));(d[0],"web");("%s",d[0]); 0;}此时*d[]为一个指向指针的指针d[0]=(1*(char));此句话的意思是,分配1个字节的内存空间给d[0],也就意味着d这个数组的之一个元素[0]内保存的是一个1字节空间的地址,因为d[0]指向一个地址!你可以这样理解对于普通的数组(例如 char d[4];),在内存中是这样的变量:内存地址:内容d[0]::'w'd[1]::'e'd[2]::'b'd[3]::'\0'而在此处 char *d[4]; *d[0] = (1*(char));,是这样的'd[0]::[1]::[2]::[3]::而在内存处才保存着"web\0"不好意思,我上面说错了,应该是d[0]::[1]::NULLd[2]::NULLd[3]::NULL而在内存处:'w':'e':'b':'\0'对应的,你的代码执行后,内存变量应该是这样的d[0]::[1]::[2]::[3]::NULL在内存处::'w':'e':'b':'\0':随机字符......:随机字符以上内存地址是以字节方式内存对齐的,用一些编译器编译后可能地址会有些问题(比如d[0]到d[1]不止差了4,可能是8),但总体框架就是这样!

以上是边肖对数组指针(数组指针的用法)及相关问题的回答。希望数组指针的问题(数组指针的用法)对你有用!

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了