1. 指针数组
1.1 基本概念
指针数组是指一个数组,其中的每个元素都是指针。
这意味着数组中的每个元素都存储一个地址,该地址指向内存中的某个位置。
指针数组的声明形式为:
代码语言:javascript复制data_type *array_name[size];
//示例:
int *p[10];//该指针数组包含10个整型地址
1.2 简单示例
代码语言:javascript复制以下是一个简单的示例,演示了如何声明和使用指针数组:
#include <stdio.h>
int main() {
// 声明一个整型数组
int num1 = 10, num2 = 20, num3 = 30;
int *intArray[3]; // 声明一个包含3个整型指针的数组
// 将指针指向整型变量
intArray[0] = &num1;
intArray[1] = &num2;
intArray[2] = &num3;
// 访问指针数组中的元素并输出值
for (int i = 0; i < 3; i ) {
printf("Value at index %d: %dn", i, *intArray[i]);
}
return 0;
}
/*输出结果:
Value at index 0: 10
Value at index 1: 20
Value at index 2: 30
*/
2. 指针数组做main形参
2.1 int main(int argc, char *argv[]);
指针数组的一个重要应用是做main函数的形参。
1. main
函数的原型通常定义为
int main(int argc, char *argv[]);
说明:
- 其中,
argc
表示命令行参数的数量,argv
是一个指针数组,每个元素都是一个指向以 null 结尾的字符串的指针。 - 如果main函数带参数的话,则第一个参数必须是int型,第二个参数必须是字符指针数组 char *xx[],参数只能由操作系统给出。
2.2 简单示例
代码语言:javascript复制下面例子中,
argc
表示命令行参数的数量,而argv
是一个指针数组,其中每个元素都是一个指向字符串的指针。程序通过循环遍历argv
数组,输出每个命令行参数的内容。
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Number of command line arguments: %dn", argc);
// 遍历指针数组,输出每个命令行参数
for (int i = 0; i < argc; i ) {
printf("Argument %d: %sn", i, argv[i]);
}
return 0;
}
/*输出
Number of command line arguments: 1
Argument 0: D:Program FilescodeCC 程序集合c【谭浩强】C语言自学outputmytest.exe
*/