C语言数组简述

概念

数组是一种用来存储相同数据项的集合,声明时必须指定类型和大小。

// 声明一个整型数组,包含5个元素
int numbers[5];

// 初始化数组
int numbers[5] = {10, 20, 30, 40, 50};

具体操作

#include <stdio.h>

int main(){
    int arr[3] = {520,1314,5201314};          //初始化数组
    int lenth = sizeof(arr)/sizeof(arr[0]);    //获取数组长度
    printf("数组如下:\n");
    for (int i = 0;i < lenth;i ++){             //遍历数组
        printf("arr[%d] = %d\n",i,arr[i]);     //输出数组元素
    };
    int i;
    scanf("%d",&i);
    printf("the result is %d\n",i);            //查找元素
    return 0;
}

arr[0] = 520
arr[1] = 1314
arr[2] = 5201314
1
the result is 1

解释

获取长度:先计算整个数组[a]大小,再除以单位元素(a[0])的大小,就可以得到数组的长度。

sizeof()

概念:C语言中编译性运算符,返回变量等在内存中的大小(占的字节数)。

直接使用就行:

#include <stdio.h>

int main() {
    printf("Size of char: %zu bytes\n", sizeof(char));
    printf("Size of int: %zu bytes\n", sizeof(int));
    printf("Size of float: %zu bytes\n", sizeof(float));
    printf("Size of double: %zu bytes\n", sizeof(double));
    return 0;
}

/*

Size of int: 4

size of char:1

size of float:4

*/

需要特别记忆的是 char 类型为1, int 类型为 4.

比如在以后的pwn题目脚本编写中,需要在 int a[13] 数组中填充数据,并在 a[6] 位填充17,就需要将前6位填满 (数组顺序是 0 1 3 4 5...)

payload = b"a"*6*4 + p64(17)      

//因为这里是int类型数组, int 是 char 大小的四倍,所以 *4

 也可以直接用 int 类型填充,但这里我还不清楚

数组注意

  1. 类型一致性:数组中的所有元素必须是同一数据类型。
  2. 固定大小:数组的大小在声明时确定,之后不能改变。
  3. 连续存储:数组的元素在内存中是连续存储的。
  4. 索引访问:可以通过索引(从0开始)来访问数组中的元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值