指针变量的定义,初始化及引用

定义指针变量

int i,j;//定义整型变量i和j:存放整数
int *point1,*point2;//定义整形指针point1和point2存放整型变量地址

怎么理解这行代码?(*修饰的是谁?它前面的int还是后面的ponit1?

  1. point1表示:变量名

  2. *表示:指针(用来修饰它后面的point)

  3. int表示:整型类型

  4. int*point1表示:名为point1的整型指针变量(只能存放int型普通变量地址)

指针变量的初始化

和普通变量一样,指针变量在使用前必须进行初始化

初始化的目的通过建立起与合法的普通变量之间的指向关系·,实现指针的引用!

i = 3;//对普通变量进行初始化
j = 4;//对指针变量进行初始化
point1 = &i;//建立指向关系,实现指针引用
point2 = &j;//point1保存了i的地址,ponit1指向了i,*point1就是i

&i

3

point1

指向

i

&j

4

point2

指向

j

指针变量的引用

*point1 = 6;//使用了运算符,让指针变量对所指变量进行引用
*point2 = 8; // *ponit1与i成为了同一个概念

指针变量一律上占有4个字节指针变量是用来存放地址的因为32位机上内含了32根地址总线(ab)

下面是验证方法:

#includ<stdio.h>
int main()
{ 
	int *p;
	printf("%d",sizeof(p));
	return 0 ;
}

经典指针程序

输入a,b两个整数,输出a,b时,按先大后小顺序输出

#include <stdio.h>

int main() {
    int a,b;
    int *p1,*p2,*p;//定义指针变量
    scanf("%d%d",&a,&b);//初始化普通整型变量
    //初始化指针变量
    p1 = &a;//建立合法指向关系,实现指针的引用:p1存了a的地址p1就指向了a,*p1就是a
    p2 = &b;//p2保存了b的地址,p2就指向了b,*p2就是b。
    if (*p1 < *p2)
    {   //交换p1与p2里面的地址:改变指针里面的地址,就可以改变指向关系,进而改变引用关系,详细见下图
        p = p1;
        p1 = p2;
        p2 = p;
    }
    printf("MAX=%d\n,MIN=%d\n",*p1,*p2);
    return 0;
}//输出63

示意图:

3

&a

a

指向

p1

6

&b

b

指向

p2

yukikaze nano desu!