打印

为什么定义的指针使用时可以当作数组用?

[复制链接]
834|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
豌豆爹|  楼主 | 2024-2-21 11:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*清屏函数--将整个屏幕清成同一种颜色*/
void lcd_clear(unsigned int color)
{
    unsigned int num;
    unsigned int i = 0;
    unsigned int *startaddr = (unsigned int*)tftlcd_dev.framebuffer;
    num = (unsigned int)tftlcd_dev.width * tftlcd_dev.heigh;
    for(i = 0; i < num; i++)
    {
        startaddr[i] = color;
    }

}

 

这是学Linux开发板时遇到的程序,

不明白的是程序定义的unsigned int *startaddr是指针,为什么后面使用时直接当数组使用? startaddr[ i ] 这个明明是数组的使用方式,指针跟数组怎么串着用,这是什么语法?

使用特权

评论回复
沙发
发货后已经wi| | 2024-2-25 19:34 | 只看该作者
startaddr[i] = color 的效果就是将 startaddr 所指向的显存中的第 i 个unsigned int设置为color。

使用特权

评论回复
板凳
q1ngt12| | 2024-3-25 15:45 | 只看该作者
定义的指针可以当作数组使用是因为在C和C++中,数组名实际上是一个指向数组首元素的常量指针。因此,当你定义一个指向数组首元素的指针后,你可以通过指针来访问数组中的元素,就好像在使用数组名一样

使用特权

评论回复
地板
digit0| | 2024-3-25 16:06 | 只看该作者
指针就等于是数组呀。学C的时候不就教了嘛。

使用特权

评论回复
5
Pretext| | 2024-3-25 16:36 | 只看该作者
建议重新学习一下C语言,就不会有这样的问题了。

使用特权

评论回复
6
suw12q| | 2024-3-25 17:00 | 只看该作者
有可能是因为你的指针指向数组了呗

使用特权

评论回复
7
lamanius| | 2024-3-25 18:10 | 只看该作者
例如,如果有一个整型数组 int arr[5],你可以定义一个指向数组首元素的指针 int *ptr = arr,然后通过 ptr 来访问数组中的元素,比如 ptr[0]、ptr[1] 等,这与使用数组名 arr[0]、arr[1] 是等价的

使用特权

评论回复
8
kaif2n9j| | 2024-3-26 08:30 | 只看该作者
这种灵活性使得指针可以方便地用来操作数组,从而实现诸如动态内存分配、数组遍历等功能

使用特权

评论回复
9
tax2r6c| | 2024-3-26 12:05 | 只看该作者
我觉得就是指针可以是函数,数组也可以是变量,所以你指针的地址在哪儿,就是代表的谁喽

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

500

主题

1886

帖子

4

粉丝