指针1

指针

定义

知道了一个变量的地址,就可以通过这个 地址来访问这个变量,因此,又把变量的地址称为该变量的“指针”。(地址)

注意区分指针变量,指针变量指某些专门用来存放变量地址的变量。(变量)

操作符

*取值操作符

&取址操作符

eg:

定义一个指针变量

int *i_pointer//这里不是取值操作符,只是声明i_pointer为指针;

存取变量的值

i_pointer=&i;

一般形式

类型说明符 *变量名

其中,表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。

需要特别注意的是,只有整型变量的地址才能放到指向整型变量的指针变量中。下面的赋值是错误的:

eg:
char c;
int *pointer;
pointer c;//错误表示,类型不相同。所占字节数不同

eg:对输入的两个整数按大小顺序输 出!这次用函数实现交换功能!

#include "stdio.h"
int main()
{
   int swap(int *p_1,int *p_2);
   int a,b;
   int *pointer_1,*pointer_2;
   scanf("%d%d",&a,&b);
   pointer_1=&a;
   pointer_2=&b;
   if(a<b)
  {
       swap(pointer_1,pointer_2);
  }
   else
  {
       printf("%d%d",*pointer_1,*pointer_2);
  }

}
int swap(int *p_1,int *p_2)
{
   int *temp;
   temp p_1;
   p_1 p_2;
   p_2 temp; 
   printf("%d%d",*p_1,*p_2);
}

Eg2:

输入三个整型,利用指针和函数从大到小依次输出;

#include "stdio.h"
int main()
{
   int *pointer_1,*pointer_2,*pointer_3;
   int a,b,c;
   void exchange(int *pointer_1,int *pointer_2,int *pointer_3);

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

   pointer_1=&a;
   pointer_2=&b;
   pointer_3=&c;
   exchange(pointer_1,pointer_2,pointer_3);
   printf("%d>%d>%d",*pointer_1,*pointer_2,*pointer_3);
}
void exchange(int *pointer_1,int *pointer_2,int *pointer_3) 

   void swap(int *p1,int *p2);
   if(*pointer_1<*pointer_3)
  {
       swap(pointer_1,pointer_3);
  }
   if(*pointer_1<*pointer_2)
  {
       swap(pointer_1,pointer_2);
  }
   if(*pointer_2<*pointer_3)
  {
       swap(pointer_2,pointer_3);
  }
   
}
void swap(int *p1,int *p2)
{
   int temp;
   temp *p1;
   *p1 *p2;
   *p2 temp;
}

指针与数组

数组名本质上也为一个地址;

假设有一个a数组,整型,有10个元素。要 输出各元素的值有三种方法: (1)下标法(a[i]) (2)通过数组名计算数组元素地址,找出元素的值。((a+i)) (3)用指针变量指向数组元素。((p+i))

eg:

#include "stdio.h"
int main()
{
   int a[10],b[5];
   int i;
   void swap(int a[],int b[]);
   for(i=0;i<10;i++)
  {
       scanf("%d",&a[i]);
  }
   swap(a,b);
   for(i=0;i<10;i++)
  {
       printf("%d",a[i]);
  }
}
void swap(int a[],int b[])
{
   int i,temp,j;
   for(i=0;i<5;i++)
  {
      10-1-i;
      b[i] a[i];
      a[i]=a[j];
      a[j]=b[i];
  }
}

 

posted @ 2021-11-16 21:13  eliotJones  阅读(86)  评论(0)    收藏  举报