关于指针的笔记【1】【C语言程序设计-谭浩强】

指针是什么?

一个 变量的地址称为该变量的"指针"【将地址形象化的称为“指针”】。(指针是什么百度百科)

  注意区分储存单元的地址和内容这两个概念的区别。

直接访问:直接按变量名进行访问,直接通过变量名访问变量内容

间接访问:将变量a的地址存放到另一个变量b中,然后通过变量b找到变量a的地址,从而访问变量a的内容。

指针变量

一个变量a专门用来存放另一个变量b的地址(即指针),则称变量a为指针变量。

指针变量就是地址变量,用来存放地址,指针变量的值就是地址(即指针)。

注意区分指针与指针变量这两个概念。(指针是一个地址,指针变量是存放地址值的变量)

指针使用例子:

 1 #include <stdio.h>
 2 int main()
 3 {
 4     int a=100,b=10;
 5     //定义整型变量a,b,并初始化
 6     int * pointer_1, * pointer_2;
 7     //定义指向整数型数据的指针变量 pointer_1,pointer_2
 8     pointer_1=&a;
 9     //把变量a的地址赋给指针变量pointer_1
10     pointer_2=&b;
11     //把变量b的地址赋给指针变量pointer_2
12     printf("a=%d,b=%d\n",a,b);
13     //通过变量名直接访问a和b的值
14     printf("* pointer_1=%d, * pointer_2=%d\n", * pointer_1, * pointer_2);
15     //通过指针变量间接访问输出a和b的值
16     
17     return 0;
18 }

 定义指针变量的格式:

      类型名 * 指针变量名;(可以在定义时同时对它初始化)

    类型名是在定义指针变量时必须指定的“基类型”,基类型用来指定此指针变量可以指向的变量的类型。

    因此,指针变量是基本数据类型派生出来的类型,它不能离开基本数据类型而独立存在。

    一个变量的指针的含义包括两个方面,一是一存储单元编号表示的地址,一是它指向的存储单元的数据类型(如 int,char,float等)。

    说明指针变量a时,应该说:a是指向(基本数据类型)的指针变量

引用指针变量

   给指针变量赋值:

      p=&a; //把a的地址赋值给指针变量p

   引用指针变量指向的变量:

      printf("%d", * p);//以整数型式输出指针变量p所指向的变量的值,即变量a的值

      * p =1;  //表示把整数1赋给p当前所指向的变量,如果p指向变量a,则相当于把1赋给a,即“a=1”。

   引用指针变量的值:

      printf("%o",p);//作用是以八进制数型式输出指针变量p的值,如果p指向a,就是输出a的地址,即&a

  注意:熟悉这两个运算符

      1.&  取地址运算符

      2.*   指针运算符(“间接访问”运算符),*p代表指针变量p指向的对象

示例代码:
 1 #include <stdio.h>
 2 int main(){
 3     int *p1, *p2, a, b;
 4     printf("please enter two integer numbers:");
 5     scanf("%d,%d",&a,&b);
 6     p1=&a;
 7     p2=&b;
 8     if(a<b){
 9         p1=&b;
10         p2=&a;
11     }
12     printf("a=%d,b=%d\n",a,b);
13     printf("max=%d,min=%d\n", *p1, *p2);
14     return 0;
15 }

 指针变量作为函数参数

 1 #include <stdio.h>
 2 int main(){
 3     void swap(int *pi,int *p2);
 4     int a,b;
 5     int *pointer_1, *pointer_2;
 6     printf("pleadse enter a and b:");
 7     scanf("%d,%d",&a,&b);
 8     pointer_1=&a;
 9     pointer_2=&b;
10     if(a<b){
11         swap(pointer_1,pointer_2);
12     }
13     printf("max=%d,min=%d\n",a,b);
14     return 0;
15 }
16 void swap(int *p1,int *p2){
17     int temp;
18     temp= *p1;
19      *p1= *p2;
20      *p2= temp;
21 }

 可以在函数内通过操作指针,改变函数外数据。

猜你喜欢

转载自www.cnblogs.com/xlcm/p/9769785.html