基本介绍
要让数组的元素 指向 int 或其他数据类型的地址(指针)。可以使用指针数组。
指针数组定义
数据类型 *指针数组名[大小];
1)比如: int *ptr[3];
2)ptr 声明为一个指针数组。
3)由 3 个整数指针组成。因此,ptr 中的每个元素,都是一个指向 int 值的指针。
指针数组快速入门 和 内存布局示意图
#include <stdio.h>
const int MAX=3;
int main () {
int var[] = {10, 100, 200};
int i, *ptr[3];
for ( i = 0; i < MAX; i++) {
ptr[i] = &var[i]; /* 赋值为整数的地址 */
}
for ( i = 0; i < MAX; i++) { //指针数组来获取各个值
printf("Value of var[%d] = %d ptr[%d]本身的地址 = %p ptr数组本身的地址值是=%p\n ", i, *ptr[i] , i, &ptr[i],ptr[i]); // 10, 100, 200
}
return 0;
}
指针数组的内存布局
指针数组应用实例
请编写程序,定义一个指向字符的指针数组来存储字符串列表(四大名著书名), 并通过遍历 该指针数组,显 示字符串信息 , (即:定义一个指针数组,该数组的每个元素,指向的是一个字符串)
#include <stdio.h>
void main() { //定义一个指针数组,该数组的每个元素,指向的是一个字符串
char *books[] = { "三国演义", "西游记", "红楼梦", "水浒传" };
char * pStr = "abc";
//遍历
int i, len = 4;
for(i = 0; i < len; i++) {
printf("\nbooks[%d] 指向字符串是=%s pStr 指向的内容=%s", i , books[i], pStr);
}
}
字符串本身就是在地址值上的,所以指针指向字符串数组的时候,不用在前面加上星号(*),如果加上星号,就会报错