索引法和指针法访问数组

来源:互联网 发布:php cli模式 编辑:程序博客网 时间:2024/06/05 19:33

访问数组有两种形式:

1. 通过数组名和索引组合访问数组元素

2. 通过指针变量操作数组元素,数组中各个元素在内存中都是相邻排列的,

相邻元素的地址只相差一个元素的字长,所以可以通过一个数组元素型指针

加上要访问数组元素的地址偏移量即可获取该元素地址,根据地址就能获取对应内存的值。

eg:

#include <stdio.h>#define SIZE 10int main(void){    char a_ch[SIZE] = "student"; /* 定义并初始化a_ch */    int a_int[SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; /* 定义并初始化a_int */    /* 定义并初始化两个数组元素型指针 */    char * p_ch = a_ch;    char * p_int = a_int;    printf("a_ch[4] = %c, a_ch[3] = %c\n", a_ch[4], a_ch[3]); /* 使用索引法输出元素 */    printf("&a_ch[4] = %p, &a_ch[3] = %p\n", &a_ch[4], &a_ch[3]); /* 使用索引法输出两个元素地址 */    printf("&a_ch[4] - &a_ch[3] = %d\n", &a_ch[4]-&a_ch[3]); /* 使用索引法输出两个元素之间的地址偏移量 */    printf("a_int[4] = %d, a_int[3] = %d\n", a_int[4], a_int[3]); /* 使用索引法输出元素 */    printf("&a_int[4] = %p, &a_int[3] = %p\n", &a_int[4], &a_int[3]); /* 使用索引法输出两个元素地址 */    printf("&a_int[4] - &a_int[3] = %d\n", &a_int[4]-&a_int[3]); /* 使用索引法输出两个元素之间的地址偏移量 */    /* 使用指针法输出两个元素的地址 */    printf("p_ch + 4 = %p, p_ch + 3 = %p\n", p_ch + 4, p_ch + 3);    printf("p_int + 4 = %p, p_int + 3 = %p\n", p_int + 4, p_int + 3);    /* 使用数组名+地址偏移量组合访问数组元素 */    printf("%d\n", *(a_int + 2)); /* 等价于a_int[2]获取的值 */}

运行结果: