一、变量和数组可以通过指针来转换
“int *x”中的x究竟是不是数组?光看这一句小雅无法告诉你,因为它既可表示单个变量内容,也可表示数组。下面是小雅专门为你准备的例子,理解之后,对动态分配时长度计算有好处。
#include <stdio.h>
int main(void)
{
int *num = NULL;
int *x, y[] = {12, 22,32}, z = 100;
//下面演示,指针既可充当变量、也可充当数组
x=&z; //整型变量的地址赋给x
printf("*x=%d, x[0]=%d\n", *x, x[0]);
x = y; //数组的地址赋给x
printf("*x=%d, x[ 0]=%d, x[ 1]=%d, x[2]=%d\n", *x, x[0], x[1], x[2]);
x = y + 1; //数组的第二位地址赋给x
printf("*x=%d, x[-1]=%d, x[ 0]=%d, x[1]=%d\n", *x, x[-1], x[0], x[1]);
x = y + 2; //数组的第三位地址赋给x
printf("*x=%d, x[-2]=%d, x[-1]=%d, x[0]=%d\n", *x, x[-2], x[-1], x[0]);
return 0;
}
|