指针变量的定义 在程序执行过程中,由于是通过变量的地址来找到存储变量值的内存单元从而取的变量的值,因此将变量的地址又称为变量的指针。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #include <stdio.h> void test1 () ;int main () { test1(); system("pause" ); return 0 ; } void test1 () { int num = 100 ; printf ("%p" , &num); int *p=NULL ; printf ("sizeof(p)=%d\n" , sizeof (p)); p = # printf ("num=%d" , num); printf ("*p=%d" , *p); }
注意:
定义指针变量时,应该注意以下两个问题。
在定义格式中,标识符前的*只是一个符号,表示其后的变量是一个指针变量。
指针变量的类型必须与其指向的变量类型一致,否则会出错。
例如以下这段代码就是出错的
运算符*是指针运算符,用于访问指针变量所指向的变量。
例如
1 2 3 int n=36 ;int *p1;p1=36 ;
其中,*p1yun等价,可用间接方式访问n,即用 *p1代表n,语句“ *p1=36;”与“n=36;”等价。
有趣的示例
1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h> int main () { int m = 30 , n = 60 , * p; p = &m; printf ("%d,%d\n" , m, *p); *p = 230 ; printf ("%d,%d\n" , m, *p); p = &n; *p = 780 ; printf ("%d,%d\n" , n, *p); return 0 ; }
运行结果
30,30
230,230
780,780
同一个指针可以变量可先后指向不同的变量。
例题:使用指针变量编写:交换两个变量的值 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <stdio.h> int main () { int a, b, c, * p1, * p2; p1 = &a; p2 = &b; printf ("输入整型变量a和b的值:" ); scanf ("%d,%d" , p1, p2); printf ("交换前a和b的值分别是:" ); printf ("%d,%d\n" , *p1, *p2); c = *p1; *p1 = *p2; *p2 = c; printf ("交换后a和b的值分别是:" ); printf ("%d,%d\n" , *p1, *p2); return 0 ; }
程序运行情况如下(假设a和b分别输入5和8):
输入整型变量a和b的值:5,8
交换前a和b的值分别是:5,8
交换后a和b的值分别是:8,5
that is all,thanks!