指针-----希望对大家有用

来源:互联网 发布:excel数组求和 编辑:程序博客网 时间:2024/04/30 08:53

指针变量
1、观察表示指针的内容,大多数现代计算机用字节来分隔内存,每个字节可以储存8位信息。内存为   16MB的机器拥有16777216个字节,那么可以认为作为地址数的范围是0~n-1.
2、程序中每个变量占有一个或者多个内存字节,把第一个地址称为是变量的地址。如图:变量i占有的   字节从地址2000到地址2001,所以变量i的地址是2000:

 

  
3、在用变量p存储变量i的地址时,我们说成是p“指向”i,换句话说,指针就是地址,而且指针变量知   识储存地址的变量。

4、int *p    说明P是指向int型对象的指针变量。类似的还有float ,char,double;

5、  &         取地址运算:如果x是变量&x就是x在内存中的地址,如果*p是指针,那么*p表示p当前   指向的对象。int i,*p   =>  p=&i;
   
6间接寻址运算符:一旦指针便来弄个指向的对象可以用 * 运算符访问储存在对象中的内容例如p指向i、 ,那么可以如下所显示出i的值:printf("%d/n",*p);这个printf会显示i的值,而不是i的地址。
 
7、例如:j=*&i;/*same as j=i;*/
    只要p指向i,那么*p就是i的别名。*p不仅拥有和i同样的值,而且对*p的改变也会改变i的值
注释:不要把间接寻址运算符用于为初始化的指针变量

指针作为实际参数 
程序:找出数组中的最大元素和最小原色
#include <stdio.h>
#define N 10
void max_min(int a[], int n, int *max, int *min);
main()
{
int b[N],i ,big,small;
printf("Enter %d number :",N);
for(i=0;i<N;i++)
scanf("%d",&b[i]);
max_min(b,N,&big,&small);
printf("Largest:%d/n",big);
printf("Smallest:%d/n",samll);
return 0;
}

void max_min(int a[], int n, int *max,int *min)
{
 int i;
 *max=*min=a[0];
  for(i=1;i<n;i++)
  {
    if(a[i]>*max)
    {
    *max=a[i];
    else if(a[i]<*min)
      *min=a[i];
    }
  }
}

 

 

 

 

 

 

 

 

 

 

原创粉丝点击