指针和指针数组
1 #include<stdio.h> 2 3 int main() { 4 5 int a = 100 , b = 200 ; 6 int *p1 = &a , *p2 = &b ; 7 8 printf("%d,%d\n",a ,b); 9 printf("%d,%d\n",*p1,*p2); 10 printf("%x,%x\n",&a,&b); 11 printf("%x,%x\n",p1,p2); 12 13 *p1 = *p1 * 3; 14 printf("%d\n",a); 15 printf("%d\n\n",*p1); 16 17 p1 = &b; 18 printf("%x\n",p1); 19 printf("%x\n",p2); 20 21 return 0; 22 23 24 }
指针数组
1 #include<stdio.h> 2 3 // 不同方式输出数组 4 int main(){ 5 int a[10] , i , *p=NULL; 6 7 for( i = 0 ; i < 10 ; i++){ 8 a[i] = i; 9 } 10 11 for(i = 0 ; i < 10 ; i++){ 12 printf("%d ",a[i]); 13 } 14 printf("\n"); 15 16 for(i = 0 ; i < 10 ; i++){ 17 printf("%d ",*(a+i)); 18 } 19 printf("\n"); 20 21 for(p = a ; p < a+10 ;){ 22 printf("%d ",*p++); 23 } 24 printf("\n"); 25 26 return 0; 27 } 28 ~
* ,++ ,--优先级相同
*p++:先取得当前p所指向得变量值,再使p指向后一个变量。相当于 a[i++]
*p--:先取得当前p所指向得变量,再使p指向前一个变量,相当于a[i--]
*++p:先使指向后一个变量,再取p所指向得变量得值,相当于a[++i]
*--p :先使得p指向前一个变量,再取p所指向得变量得值,相当于 a[--i]
数组元素也可以是指针类型:这种数组称为指针数组,也就是说指针数组得每个元素都是指针变量。
1 int *p[5];
* 运算符得优先级低于 [ ]
p先与5结合,显然他是一个数组,再与*结合表示数组元素类型全是指针。
这里的p是一个二级指针。
时间: 2024-10-01 04:54:25