示例
//Visual Studio中加上这句才可以使用scanf() //否则只能使用scanf_s() #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdbool.h> #define SIZE 4 //argc: 参数个数 argv[]: 参数数组 int main(int argc, char *argv[]) { short dates[SIZE]; short * pti; short index; double bills[SIZE]; double * ptf; pti = dates;//把数组地址赋给指针 //pti = &dates[0];//和上面那句等效 ptf = bills; //ptf = &bills[0];//和上面那句等效 printf("%23s %10s\n", "short", "double"); for (index = 0; index < SIZE; index++) printf("pointers + %d: %10p %10p\n", index, pti + index, ptf + index); //指针+1,指针会移到下一个存储单元所在内存地址(以字节为单位) //short数组的指针+1,指针会往后移两个字节,因为1个short占两个字节。 //注意:内存地址是常量类型 if (dates + 2 == &dates[2]) printf("内存地址相同\n"); if (*(dates + 2) == dates[2]) printf("值相同\n"); //操作数组时,可以使用指针表示法,也可以使用数组表示法 system("pause"); return 0; }
运行测试