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 != '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;
}
') {
printf("%c\n", *ptr);
ptr++;
}
笔记!阵列变量点在阵列的分配内存位置的开始地址处。
在上面的代码中,我们将存储数组的开始地址 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
##代码##
