前者是指向数组中第一个元素的指针,后者是指向整个数组的指针。
char a[MAX]; /*array of MAX characters*/
char *p = a; /*p为指向数组的指针*/
char *pa = &a; /*该语句是不正确的,pa的类型为'char *',而&a的类型为'char (*)[MAX]’*/
char (*pb)[MAX] = &a; /*该语句是正确的,pb的类型为'char (*)[MAX]'*/
#include<stdio.h>
void main() { char a[5] = {'a','b','c','d','/0'}; char *p = a;
//运行下面这句后, vc6.0 提示的错误为:cannot convert from 'char (*)[5]' to 'char *',&a的类型应该是指向一个数组的指针 //char *pa = &a; //所以,应该定义一个指向相同类型和大小的数组的指针来获得“&a”的值 char (*point_to_str)[5]; point_to_str = &a;
printf("%d/n%d/n",&p, &point_to_str); printf("%s/n%s/n", p, point_to_str); }
运行结果为: 1245044 1245040 abcd abcd
|