指针变量 初级

来源:互联网 发布:淘宝细节图尺寸 编辑:程序博客网 时间:2024/05/22 14:51

1.通过地址能找到所需的变量单元,地址指向该单元变量。

2.一个变量的地址称为该变量的“指针”

3.一个变量专门存放另一个变量地址(即指针),称为“指针变量”

4.定义指针变量一般形式  : int *pointer_1,*pointer_2;

  Int为基类型     指针变量可指向的变量类型。

5.指针变量前面的“*“表示为该变量的类型为指针型变量

6.a是指向整型数据的指针变量(正确读法)

 

一、输入两个整数,按先大后小的顺序输出两个数

#include<stdio.h>

int main()

{

         int*p,a,b,*p1,*p2;

         printf("intputtwo numbers:");

         scanf("%d%d",&a,&b);

         p1=&a;p2=&b;

         if(b>a)

         {

                   p=p1;

                   p1=p2;

                   p2=p;

         }

         printf("maxnumber is %d",*p1);

 

}

 

二、现在用函数处理,而且用指针类型的数据作函数参数。

#include<stdio.h>

int main()

{

         voidswap(int *,int *);

         inta,b,*pointer_1,*pointer_2;

         printf("pleaseinput two numbers :\n");

         scanf("%d%d",&a,&b);

         pointer_1= &a;

         pointer_2= &b;

         if(b>a)

         {

                   swap(pointer_1,pointer_2);

         }

         printf("max= %d,min = %d",*pointer_1,*pointer_2);

         return0 ;

}

void swap(int *p1,int *p2)

{

         intp;

         p=*p1;

         *p1=*p2;

         *p2=p;

}

函数中不可写成*p=*p1;因为由于未给p赋值,因此p中并无确定的值(它的值是不可预见的),所以指向的单元也是不可预见的。所以,对*p赋值就是向一个未知的存储单元赋值,不可以。

 

如果写成swap(int x,int y)

{

         inttemp;

         temp=x;

         x=y;

         y=temp;

}

注意1:传递值到函数形参,并未影响实参,形参交换之后便释放了。

 

注意2:不能企图通过改变指针形参的值而使指针实参的值改变。

注意3:不可能通过执行调用函数来改变实参指针变量的值,但是可以改变实参指针变量所指向变量的值。

 

 

例三:输入3个整数a,b,c,要求由大到小的顺序将他们输出,用函数实现。

#include<stdio.h>

int main()

{

         voidexchange(int *p11,int *p22,int *p33);

         inta,b,c,*p1,*p2,*p3;

         printf("pleaseinput three numbers:");

         scanf("%d%d %d",&a,&b,&c);

         p1=&a;p2=&b;p3=&c;

         exchange(p1,p2,p3);

         printf("theorder is :%d >%d >%d",a,b,c);

         return0;

 

}

void exchange(int *p11,int *p22,int *p33)

{

         voidswap(int *q1,int *q2);

         if(*p11<*p22)

                   swap(p11,p22);

         if(*p11<*p33)

                   swap(p11,p33);

         if(*p22<*p33)

                   swap(p22,p33);

}

void swap(int *q1,int *q2)

{

         inttemp;

         temp=*q1;

         *q1=*q2;

         *q2=temp;

}

总结:用指针做连接,改变数值(实参指针)

1 0