四、指针的长度
让许多初学者遗憾的是,C语言没有提供数组长度的函数,但可以用sizeof()运算符先求数组的总长度,再求出数组类型的长度,二者相除便得到数组的长度。C语言更大的一个遗憾便是,sizeof()对指针变量求值时,结果总是4,这是因为指针变量的内容是地址,地址总是4个字节来表示。
因此有经验的编程人员,在用指针作参数时,一般总是同时多定义一个参数,来存放其长度。也就是指针和其长度同时传递过去。另外,数组长度如果事先知道,一般定义为常量。
#include <stdio.h>
int main(void)
{
char *msg[] = {"www.quanxue.cn",
"www.51minge.com",
"这儿是小雅的C语言教程"};
double dNum[] = {12.5, 24.55, 100.83};
double *p = dNum;
printf("dNum的size:%2d, 数组个数是:%d\n", sizeof(dNum), (int)sizeof(dNum)/sizeof(double));
printf(" p的size:%2d, 数组个数是:%d\n", sizeof(p ), (int)sizeof(p )/sizeof(double));
printf(" msg的size:%2d, 数组个数是:%d\n", sizeof(msg ), (int)sizeof(msg )/sizeof(char *));
return 0;
}
|