数组的本质分析

  1. 数组的概念

    • 数组是相同类型的变量的有序集合
      int s[6];
      s代表数组第一个元素的起始地址。
      每个匀速都是int型数据
      这24个字节空间的名字为s,s[0],s[1]都是s中的元素,并非元素的名字,数组中的元素没有名字。
  2. 数组的大小

        1.数组在一片连续的内存空间中存储元素
        2.数组元素的个数可以显示或隐式指定
    

    例如:

        int s[6] = {1,2};
        int t[] = {1,2};    
    
#include <stdio.h>

int a[5];           //全局

int main()
{
    int s[6] = {1, 2};
    int t[] = {1, 2};
    int b[5];       //局部

    printf("s[2] = %d\n", s[2]);
    printf("s[3] = %d\n", s[3]);
    printf("s[4] = %d\n", s[4]);

    printf("sizeof(s) = %d\n", sizeof(s));
    printf("sizeof(t) = %d\n", sizeof(t));
    printf("count for s: %d\n", sizeof(s)/sizeof(s[0]));
    printf("count for t: %d\n", sizeof(t)/sizeof(t[0]));


    printf("a[0] = %d\n",a[0]);
    printf("b[0] = %d\n",b[0]);


    return 0;
}

编译结果如下:
这里写图片描述

这里值得注意的是数组变量在没有自定义初始化的情况下,全局数组变量会被默认初始化为0而局部数组变量则被初始化为随机值。

3.数组地址与数组名

1.数组名代表数组首元素的地址
2.数组地址需要用取地址符&才能得到
3.数组首元素的地址值与数组的地址值相同
4.数组的首元素地址与素组的地址是两个不同的概念。
#include <stdio.h>

int main()
{
    int s[6] = { 0 };

    printf("s = %p\n", s);
    printf("&s = %p\n", &s);
    printf("&s[0] = %p\n", &s[0]);

    return 0;
}

这里写图片描述

4.数组名的盲点

1.数组名可以看做一个常量指针
2.数组名“指向”的是内存中数组首元素的起始地址位置
3.数组名不包含数组的长度信息
4.在表达式中数组名只能作为右值使用
5.只有在下列场合中数组名不能看做常量之怎
    -数组名作为sizeof操作符的参数
    -数组名作为&运算符的参数
#include <stdio.h>

int main()
{
    int a[5] = {0};
    int b[2];
    int* p = NULL;

    p = a;

    printf("a = %p\n", a);
    printf("p = %p\n", p);
    printf("&p = %p\n", &p);
    printf("sizeof(a) = %d\n", sizeof(a));
    printf("sizeof(p) = %d\n", sizeof(p));

    printf("\n");

    p = b;

    printf("b = %p\n", b);
    printf("p = %p\n", p);
    printf("&p = %p\n", &p);
    printf("sizeof(b) = %d\n", sizeof(b));
    printf("sizeof(p) = %d\n", sizeof(p));

   // b = a;

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,数组通常使用列表(List)或Numpy数组进行表示。下面介绍一些数组在Python中的应用: 1. 数字计算 Numpy是Python中用于数学计算的重要库之一,它提供了多维数组对象和一系列的数学函数,可以方便地进行数学运算。例如,可以使用Numpy数组进行矩阵乘法、求和、平均值、方差等操作。 ```python import numpy as np a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6], [7, 8]]) # 矩阵乘法 c = np.dot(a, b) # 求和 d = np.sum(a) # 平均值 e = np.mean(a) # 方差 f = np.var(a) ``` 2. 图像处理 Python中的Pillow库可以用于图像处理,可以将一张图片转换为一个Numpy数组,并对其进行各种操作。例如,可以对图像进行裁剪、缩放、旋转等操作。 ```python from PIL import Image # 打开图片 im = Image.open('example.jpg') # 转换为Numpy数组 im_arr = np.array(im) # 裁剪图片 im_crop = im_arr[100:200, 100:200] # 缩放图片 im_resize = np.array(im.resize((100, 100))) # 旋转图片 im_rotate = np.array(im.rotate(45)) ``` 3. 数据分析 在数据分析领域,Python中的pandas库可以用于处理和分析数据,可以将数据转换为DataFrame对象进行操作。DataFrame对象本质上是一个二维的表格,可以对其进行各种操作,例如,可以对数据进行筛选、排序、分组统计等操作。 ```python import pandas as pd # 读取CSV文件 df = pd.read_csv('example.csv') # 筛选数据 df_filtered = df[df['age'] > 20] # 排序数据 df_sorted = df.sort_values(by='age') # 分组统计数据 df_grouped = df.groupby('gender').mean() ``` 总之,数组在Python中有着广泛的应用,涉及到多个领域,包括科学计算、图像处理、数据分析等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值