如何学好C语言-5-(2)

本文深入解析C语言中的内存布局,包括局部变量位置、数组存储方式、指针与内存、函数参数传递等,通过实例演示数组连续存放的特点和指针访问内存的方法。
摘要由CSDN通过智能技术生成

第二条军规:必须画图理解,内存布局

        C语言是一门偏底层的语言,可以直接操作(访问)内存的,所以我们要清楚的知道,写出的代码所对应的内存布局。

内存布局的理解会帮助你理解更多的知识,才能理解的更加清楚一些,比如:局部变量创建在哪里、数组是怎么创建的,随着下标的增长地址是怎么变化的!、一堆数组、二维数组在内存中的布局是怎样的?、指针和内存的关系是啥?、指针和数组的关系是啥?、怎么通过指针访问数据?、怎么通过指针访问任意内存?、函数的调用逻辑、函数是怎么传递参数的?、实际参数和形式参数的关系是怎么样的?、函数调用的栈帧是怎么创建和销毁的?、函数递归是怎么调研的?、全局变量和静态变量还有动态内存开辟都是那些区域?、柔型数组是怎么样的?、可变参数是怎么实现的?

数组在内存中是这样存放的?答:连续存放的。在这里可以这样1,2,3,4,5,6,7,8,9,10。就这样放,这就是连续的空间,数组都是有下标的,下标都是从0开始的,那这个下标0就来第一位。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    int arr[] = {1,2,3,4,5,6,7,8,9,10};
    //打印
    //按照下标打印:下标为0~ 9 
    int i = 0;
    //for循环
    for (i = 0; i < 10; i++)
    {
        //我要打印它arr[i];让printf来打印
        printf("%d",arr[i]);
    }
    //也能通过指针来访问。如何去做呢?
    //说:数组名本来就是地址嘛!arr地址名其实就是我们第一个元素的地址。先把它放到指针里面去
    int*p=arr;//这个地方我们给了一个指针p。变量p存了arr的地址。只要找到第一个,后面的位置都能找得到。如果空间是连续的,那后面都能找得到
    int j = 0;

    for (j = 0; j < 10; j++)
    {
        //打印变量p,利用指针指向的地址
        printf("\n%d\n",*p);
        //让p自增一次
        p++;
    }
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值