dataType *arrayName[length];
[ ]
的优先级高于*
,该定义形式应该理解为:
dataType *(arrayName[length]);
括号里面说明arrayName
是一个数组,包含了length
个元素,括号外面说明每个元素的类型为dataType *
。#include <stdio.h> int main(){ int a = 16, b = 932, c = 100; //定义一个指针数组 int *arr[3] = {&a, &b, &c};//也可以不指定长度,直接写作 int *arr[] //定义一个指向指针数组的指针 int **parr = arr; printf("%d, %d, %d\n", *arr[0], *arr[1], *arr[2]); printf("%d, %d, %d\n", **(parr+0), **(parr+1), **(parr+2)); return 0; }运行结果:
int *(*parr)
,括号中的*
表示 parr 是一个指针,括号外面的int *
表示 parr 指向的数据的类型。arr 第 0 个元素的类型为 int *,所以在定义 parr 时要加两个 *。#include <stdio.h> int main(){ char *str[3] = { "task.lmcjl.com", "C语言中文网", "C Language" }; printf("%s\n%s\n%s\n", str[0], str[1], str[2]); return 0; }运行结果:
char *
时,才能像上面那样给指针数组赋值,其他类型不行。#include <stdio.h> int main(){ char *str0 = "task.lmcjl.com"; char *str1 = "C语言中文网"; char *str2 = "C Language"; char *str[3] = {str0, str1, str2}; printf("%s\n%s\n%s\n", str[0], str[1], str[2]); return 0; }
本文链接:http://task.lmcjl.com/news/8324.html