一:指针常量
概念:指针指向的地址不可改变,但是可以通过指针改变指向地址的值。
二:常量指针
概念:指针指向的地址是一个常量,不可通过指针改变,但是指针可以改变指向。
三:指针数组
概念:由指针构成的一个数组。
1.指针数组案例(一)
#include<stdio.h> #include<string.h> //要求:输入10个字符串,请打印最长的字符串 int main() { char *section[10]; int longest_index=0; for(int i=0;i<10;i++) { scanf("%s",section[i]); if(longest_index<strlen(section[i]) longest_index=i; } printf("%s",section[i]); return 0; }
四:数组指针
概念:指向一个数组大小固定的指针。
1.数组指针案例(一)
#include<stdio.h> #include<string.h> //要求:使用数组指针操作二维数组 int main() { int array[10][10]; int i,j; for(i=1;i<=10;i++) { for(j=1;j<=10;j++) { array[i-1][j-1]=i*j; } } //p指针指向了一个行大小固定的数组,所以可以用来指向一个二维数组 int (*p)[10]=array; for(i=0;i<10;i++) { //1.可以在这里成成p=p[i];或标记2 for(j=0;j<10;j++) { //将p的转换成整形,即地址,强转为int*,则就可以操作元素了。 int *t = (int*)((int)*p+sizeof(int)*j); printf("%6d,",*t); //这里也可以使用p[i][j] } //2.这里的p++实际上是p+sizeof(int[10]) p++; printf(" "); } return 0; }