鱼C论坛

 找回密码
 立即注册
查看: 2103|回复: 0

[技术交流] 数组名 和指针

[复制链接]
发表于 2018-10-10 21:17:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 大可爱 于 2018-10-10 22:34 编辑

在大多数表达式中数组名的值是指向第一个元素的指针,但数组名不是左值,例如:无法自增等
数组名作为参数传递给函数时,数组名就是指向第一个元素的指针
但   sizeof (数组名)   是整个数组的字节数
&数组名                      是指向整个数组的指针

一个指针告诉我们两信息,起始地址和跨度
字符数组是元素为字符的数组
字符串是 一个以'\0' 结尾的字符数组


int (*p) [4] = &a[0] ;


指针不能当数组用,数组不能当指针用……就这么简单 ^_^
p2 = &b[4]  可以, p2 参考的位置是 b[3]的后面



int (*p)[10] 虽然是定义一个整型指针,但不要忘了它后边还有一个数组,所以它的跨度应该是 sizeof(int) * 10,而 array 作为数组名,它的含义是“指向数组第一个元素的地址”,所以 array 的跨度是 sizeof(array[0])


#include <stdio.h>

int main()
{
        int array[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        int (*p)[3] = (int (*)[3])&array;

        printf("%d\n", p[2][2]);

        return 0;
}


数组名 就是数组第一个元素的地址



数组名只是一个地址,而指针 是左值



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-2 16:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表