C语言-数组与指针

一、指针(Pointer)

    概念:指针是一个存储内存地址的变量(或数据对象)。

    C语言程序开发中,当通过类似于 int num = 10方式定义一个对象时候,系统会为num对象开辟一块内存空间用来储存num的值,同时系统会开辟一块内存用来储存num所对应的内存地址,储存num内存地址的变量即为指针。其实现过程如下图所示:

    指针的应用:
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int num = 10;
        int *p_num = &num;/*&为取地址符,用来获取num对象的内存地址*/
        *p_num = 20;/*通过内存地址修改对象内容*/
        printf("num的内存地址为:%p
p_num为:%p
num的值为:%d
",&num,p_num,*p_num);/*  *p_num意思为通过内存地址获取对象内容  */
        // 野指针:指向的内存地址不存在的指针
        // 空指针:不指向任何内存的指针
    }
    return 0;
}

    输出结果为:

num的内存地址为:0x7ffeefbff64c
p_num为:0x7ffeefbff64c
num的值为:20
Program ended with exit code: 0

二、数组(Array)

 (一)数组的概念


    用来存储一组数据的构造数据类型。

    特点:只能存放一种类型的数据,如全部是int型或者全部是char型,数组里的数据成为元素。


 (二)数组的定义

    格式: 类型+数组名+[元素个数];

    Int ages[5]={17,18,19,20,21};

 (三)数组内存存储

    数组的地址 == 数组名(ca)== 数组的首元素的地址&ca[0]

    在内存中,内存从大到小进行寻址,为数组分配了存储空间后,数组的元素自然的从上往下排列存储,整个数组的地址为首元素的地址。模拟该数组的内存存储细节如下:


 (四)二维数组

    Int ages1[3][10];//数组能够存放3个数组,每个数组存放10个数值,共3x10=30个述职数值.


    内存情况:


回首过往,记录点滴
原文地址:https://www.cnblogs.com/hwangcheng/p/8524588.html