数组和指针是C语言中最基本的数据结构之一。它们允许我们只用几行代码就能创建灵活和易于管理的程序。
我们大多数人都熟悉用整数、字符或浮点数等数据类型创建数组。本指南将告诉你如何创建一个指针数组并使用它来存储数据。
如何创建一个数组
我们可以把数组定义为一个项目的集合。例如,一个数组可以存储100个人的名字之类的东西。
在C语言中声明一个数组,我们使用这样的语法。
dataType arrName[arrSize];
这里,dataType指的是数组的类型,可以是整数、浮点数、字符或指针。
arrName指的是给数组起的名字,可以是任何描述变量的术语,只要符合C语言中的变量命名规则。
最后,arrSize指的是存储在数组中的项目总数。这个值是常数,一旦声明就不能改变。
例如,我们可以这样定义一个存储10个数值的整数数组。
int myarray[10];
我们也可以在同一行中定义和初始化一个数组。例如,要定义上面的数组并将所需的值填充到数组中,我们可以这样做:
int myarray[10] = {1,2,3,4,5,6,7,8,9,10};
我们也可以在不明确指定数组大小的情况下做同样的事情。请看下面的例子。
int myarray[] = {1,2,3,4,56,7,8,9,10};
要访问数组中的项目,我们使用索引方法,指定数组的名称,然后是我们想访问的项目的索引。
例如,要访问索引5的项目,我们可以这样做
printf(“%d”, myarray[5]);
在这种情况下,它应该返回数组中的第6个项目,因为数组的索引是从0开始的,所以第一个项目在0,第二个项目在1,以此类推。
我们也可以使用上述方法来修改数组中的值。
下面是一个例子。
myarray[5] = 5;
上述语句将把索引5处的数组值改为5。
C语言的指针
指针是变量,我们可以用它来存储程序中的值的地址。例如,当你定义一个变量时,它被分配了一个内存地址,你可以通过使用
&varname来访问。
比如说
int i = 10;
printf(“%p”, &i);
上面的代码应该给出了 "i "变量的地址。注意,这个地址在你每次运行程序时都会有所不同。
下面是一个示例地址。
0061FF1C
声明一个指针
在C语言中声明一个指针,我们使用类型,后面跟一个星号和变量的名字。
比如说
int *ptr, i;
为了给指针分配一个地址,我们可以这样做。
int i = 10;
ptr = &i;
在上面的例子中,我们将变量 "i "的地址设置为*ptr。
int *ptr, i;
i = 10;
ptr = &i;
printf("%p", *ptr);
从一个指针访问值
我们可以通过使用星号(*)符号来访问存储在指针地址中的值。比如说
int *ptr, i;
i = 10;
ptr = &i;
printf("%d", *ptr);
在这种情况下,我们得到的是存储的具体数值,而不是数值的地址。
指针数组
正如我们在上面的例子中创建了一个整数值的数组,我们可以创建一个指针的数组--基本上,一个存储内存地址的数组。
要做到这一点,我们可以使用这样的语法。
int *ptrarray[10];
在这个例子中,我们有一个10个整数指针的数组,允许你存储5个整数变量的内存地址。
例如,我们可以有下面的简单代码。
#include <stdio.h>
int main() {
int *ptrarray[4];
int w = 100, x = 200, y = 300, z = 400;
ptrarray[0] = &w;
ptrarray[1] = &x;
ptrarray[2] = &y;
ptrarray[3] = &z;
for (int i = 0; i< 4; i++) {
printf("The value %d has the adddress %d\n", *ptrarray[i], ptrarray[i]);
}
return 0;
}
一旦我们编译并运行上面的代码,我们应该得到与下面类似的结果。
The value 100 has the adddress 6422280
The value 200 has the adddress 6422276
The value 300 has the adddress 6422272
The value 400 has the adddress 6422268
使用这种方法,我们可以同时访问存储在数组指针中的地址和值。
总结
在这个简短的指南中,我们讨论了如何在C语言中使用数组和指针。我们还讨论了如何创建一个指针数组来存储各种值的地址。