吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3676|回复: 11
收起左侧

[C&C++ 转载] [分享]对数组的深入理解

[复制链接]
小可爱~ 发表于 2016-10-24 12:12
本帖最后由 小可爱~ 于 2016-10-24 12:13 编辑

有理解错误的地方请见谅并指出错误

核心:数组名字其本质就是数组指针(数组的指针)
[C] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>

enum Enum
{
        ONE = 1,
        TWO,
        THREE,
        FOUR,
        FIVE,
        SIX
};

void main()
{
        int a[2][3] = { ONE, TWO, THREE, FOUR, FIVE, SIX };

        //数组名字其本质就是数组指针(数组的指针) 此源代码的的数组指针步长 3 也就是说 数组指针自增(+1)就是 + 3
        printf("*a = %p\n", *a);//数组第一个元素的地址
        printf("a[0] = %p\n", a[0]);//同上
        printf("*a + 1 = %p\n", *a + 1);//数组第二个元素的地址
        printf("*(a + 1) = %p\n", *(a + 1));//数组指针+1相当于加 3 得出的是数组 a[1]的地址        
        printf("**a = %d\n", **a);
        printf("*(*a + 1) = %d\n", *(*a + 1));//自行体会
        system("pause");
}



免费评分

参与人数 1热心值 +1 收起 理由
Cizel + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 小可爱~ 发表于 2016-10-24 21:00
裴冰夏 发表于 2016-10-24 19:28
那此时的a是指a[0]的地址么,那*a+1就是第0行第1个元素的地址?有点晕

恩  从一开始的话 那是第二个元素 , 从 0 开始的话那是第一个元素
裴冰夏 发表于 2016-10-24 19:28

那此时的a是指a[0]的地址么,那*a+1就是第0行第1个元素的地址?有点晕
aikuimail 发表于 2016-10-24 12:38
数组就是一片连续的内存,名字标识的就是这块内存的起始位置,标识整块内存。
裴冰夏 发表于 2016-10-24 12:45
*a + 1   
不是指a[0]的值+1么
 楼主| 小可爱~ 发表于 2016-10-24 12:57
裴冰夏 发表于 2016-10-24 12:45
*a + 1   
不是指a[0]的值+1么

这是二级数组
Cizel 发表于 2016-10-24 14:26
以前都没注意,我发现我看懂了*(a + 1)了。 可以再来一些 混合的形式
xttdkjje 发表于 2016-10-24 21:51
c学的都忘了差不多了
Quickfox 发表于 2016-10-25 22:50 来自手机
谢谢楼主分享,学习了
随风潜入 发表于 2016-10-29 23:09 来自手机
指针在编程中实在是太重要了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-9-23 13:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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