C - 指针和一维数组
在本教程中,我们将学习使用C编程语言中的指针使用一维阵列。
我们已经了解了如何使用阵列教程中的数组。
所以,让我们使用该知识并向它添加指针。
创建一维数组
为了保持简单的事情,我们将首先创建一个维度字符 char
尺寸6.
//1D char array char str[6] = "Hello";
我们创建数组时发生了三件事。
为阵列分配了6个内存位置块。
数组的字符存储在该6个内存块中。
变量名称
str
在阵列的分配内存位置的第一个位置点点。
在上图中,我们具有大小6的一维字符阵列和阵列的每个元素的存储器位置。
打印一维数组的元素
首先,我们将使用数组索引和 for
循环打印数组的元素。
我们将继续打印字符,直到我们击中 \0
标记字符串末尾的空字符。
int i; char str[6] = "Hello"; for (i = 0; str[i] != '//array char str[6] = "Hello"; //pointer char *ptr = str;'; i++) { printf("%c\n", str[i]); }
为一维数组创建指针变量
我们将创建一个字符指针 ptr
将包含字符数组地址的变量 str
。
//char array char str[6] = "Hello"; //pointer char *ptr = str; //print the characters while(*ptr != '#include <stdio.h> int main(void) { //character array char str[6] = "Hello"; //pointer ptr //pointing at the character array str char *ptr = str; //print the elements of the array str while (*ptr != '') { printf("%c\n", *ptr); ptr++; }H e l l o End of code') { printf("%c\n", *ptr); //make the pointer ptr point at the //next memory location ptr++; } printf("End of code\n"); return 0; }
笔记!阵列变量点在阵列的分配内存位置的开始地址处。
在上面的代码中,我们将存储数组的开始地址 str
在指针变量中 ptr
。
所以,阵列str处的ptr点。
递增指针变量
当我们将指针变量递增时,它会根据数据类型的大小指向下一个存储位置。
所以, ptr
字符指针变量指向一维字符数组的第一内存位置 str
。
和 char
数据类型大小为1字节。
因此,如果第一存储器位置为1000并且PTR最初指向该存储器位置 ptr++
将制作 ptr
可变点在1001内存位置。
同样,如果指针变量是数据类型 int
并且让我们说整数的大小是2个字节,那么如果指针最初指向存储器位置1000,那么在使用它的值递增其值之后 ++
操作员它将指向保持下一个整数数据的下一个存储器位置1002.
通过指针打印一维数组元素
我们已经存储了一维字符数组的开始地址 str
在字符指针变量中 ptr
。
现在,使用 ++
递增操作员我们将访问数组的元素。
//address of 0th index element of str str[0] = baseAddress + (i x size_of_data_type) = 1000 + (0 x 1) = 1000 //address of 1st index element of str str[1] = 1000 + (1 x 1) = 1001 //address of 5th index element (last element) of str str[5] = 1000 + (5 x 1) = 1005
完整的代码
##代码## ##代码##地址映射
要获取一维数组的iTh
元素,我们可以使用以下公式。 arr[i] = baseAddress + (i x size_of_data_type)
其中: baseAddress
是阵列的起始地址。 size_of_data_type
是数据类型的大小。
例如,如果我们使用 char
类型然后,大小为1字节。
如果我们正在使用 int
类型然后,大小为2字节。
如果我们考虑一维字符数组 str
大小6.
然后,baseaeaddress = 1000和size_of_data_type = 1
##代码##