鱼C论坛

 找回密码
 立即注册
查看: 3011|回复: 3

[已解决]数组和指针问题,求指导

[复制链接]
发表于 2018-12-31 23:02:25 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>

int main()
{
        int a[5] = {1, 2, 3, 4, 5};
        int *b;

        b = &a[3];
        printf("%d\n", b[-2]);

        return 0;
}
个人理解 , b 是一个指针,为什么不需要加*呢,*b【-2】,才是b指针向前2个int型地址的取值吧?
最佳答案
2018-12-31 23:36:14
b 是指针没错。

声明的时候加*    如 int *b;
付地址的时候(也可说让指针指向某个地方的进候)直接赋值  如 b = &a[3];
当要取b指针指向的值时加* 如 printf("%d\n", *b);

b[-2] 是以数组的方式索引数组中的值。(首先你得明白数组和指针是息息相关的
-2 意指 b的当前地址 减2个int型大小(4个字节)
b当前指向的是 4

看图:
20181231_233417.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-12-31 23:05:41 | 显示全部楼层
*应该是取值运算符吧,为什么加上之后反而编译不通过呢~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-31 23:36:14 | 显示全部楼层    本楼为最佳答案   
b 是指针没错。

声明的时候加*    如 int *b;
付地址的时候(也可说让指针指向某个地方的进候)直接赋值  如 b = &a[3];
当要取b指针指向的值时加* 如 printf("%d\n", *b);

b[-2] 是以数组的方式索引数组中的值。(首先你得明白数组和指针是息息相关的
-2 意指 b的当前地址 减2个int型大小(4个字节)
b当前指向的是 4

看图:
20181231_233417.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-1 09:41:40 | 显示全部楼层
ba21 发表于 2018-12-31 23:36
b 是指针没错。

声明的时候加*    如 int *b;

感谢细心解答!已懂!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 12:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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