c语言指针应用

指针变量指向数组元素:

#import <stdio.h>
int main()
{
    int a[10]={1,2,3,4,5,6,7,8,9,0};
    int *p;
    p=a;
    for (; p<a+10; )
        printf("%d\n",*p++);
}

 

数组名做函数参数:

#import <stdio.h>
void main()
{
    void anv(int *x,int n);
    int a[10]={1,2,3,4,5,6,7,8,9},*p;
    p=a;
    for (; p<a+9; p++)
        printf("%3d",*p);
    printf("\n");
    p=a;
    anv(p,9);
    for (; p<a+9; p++)
        printf("%3d",*p);
    printf("\n");
}
void anv(int *x,int n)
{
    int *a,*i,*j,temp,t;
    a=x;
    i=a;
    j=a+n-1;
    t=(n-1)/2;
    for (; i<a+t; i++,j--)
    {
        temp=*i;
        *i=*j;
        *j=temp;
    }
    return ;
}

 

选择法对10个整数由大到小排列

 

#import “stdio.h"
void main()
{
    void inv(int *x,int n);
    int a[10]={2,4,3,5,1,6,6,4,5,8};
    int *p;
    p=a;//(p有确定的值)
    inv(p, 10);
    for (;p<a+10;p++)
        printf("%3d",*p);
    printf("\n");
}
void inv(int *x,int n)
{
    int *i,*k,*j,t;
    i=x;
    for (; i<x+n-1; i++)
    {
        k=i;
        for (j=i+1; j<x+n; j++)
        {
            if (*j>*k)
            {
                k=j;
            }
        }
       if (k!=i)
        {
            t=*i;*i=*k;*k=t;
        }
    }
    return ;
}

  

字符串指针做函数参数

#import "stdio.h"
void main()
{
    void inv(char *x,char*y);
    char *a="asdf";
    char *b="lkjh";
    printf("%s\n%s\n",a,b);
    inv(a,b);
    printf("%s\n%s\n",a,b);
}
void inv(char *x,char *y)
{
    while ((*x++=*y++)!=‘\0‘);
}

  

返回指针值得函数,得到一个返回地址值,用一个指向数组得指针变量存放一个二维数组某行首地址

 

#import "stdio.h"
void main()
{
    float *b(float(* p)[4],int n);
    float a[][4]={1,2,3,4,5,6,7,8,9,1,2,3};
    int m,i;
    float *c;
    printf("shuruxuehao:");
    scanf("%d",&m);
    printf("the scores of %d is:\n",m);
    c=b(a,m);
    for (i=0; i<4; i++)
    {
        printf("%5.2f",*(c+i));
    }
    printf("\n");
}
float *b(float(* p)[4],int n)
{
    float *d;
    d=*(p+n);
    return d;
}

  

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。