浅析C语言指针

    指针是一个地址,而指针变量是存放地址的变量。

定义指针变量

定义指针变量的一般形式:

类型名 * 指针变量名;

如:

1
int * p1,* p2;

引用指针变量

相关运算符

  1. &   取地址运算符,&a是变量a的地址
  2. *    指针运算符,*p代表指针变量p指向的对象
  • 给指针变量赋值(指针变量的值只能是地址)
1
p = &a;//把a的地址赋给指针变量p,p指向a
  • 引用指针变量指向的变量
1
2
3
int * p,a = 10;
p = &a;
printf("%d",*p);//其中*p等价于a

这里*p出现了两次,但是二者的含义完全不同。第一行中的*p表示定义了一个指针变量*p,其前面的*只是表示该变量是一个指针变量。而第三行中的*p则代表指针变量p所指向的变量a。

  • 引用指针变量的值。如:
1
printf("%d",p);//以八进制数的形式输出指针变量p的值,如果p指向了a,就是输出a的地址,即&a。

示例:

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main()
{
int a = 100,b = 90;
int * p1, * p2;
p1 = &a;
p2 = &b;
printf("a = %d,b = %d\n",a,b);
printf("* p1 = %d,* p2 = %d",*p1,*p2);
return 0;
}

输出:

1
2
a = 100,b = 90
* p1 = 100,* p2 = 90

这里指针变量p1指向a,指针变量p2指向b,因此*p1等价于a,*p2等价于b

指针变量的好处

C语言中,实参变量和形参变量之间的数据传递是单向的“值传递”方式。函数的调用可以(且只可以)得到一个返回值,而使用指针变量作参数,可以得到多个变化了的值。虽然不能改变实参指针变量的值,但是可以改变实参指针变量所指向的变量的值。


----------本文结束感谢您的阅读----------
坚持原创技术分享,您的支持将鼓励我继续创作!