指针

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <algorithm>
 4 #include <cstring>
 5 using namespace std;
 6 void f(int *a,int *b){
 7     int c;
 8     c=*a;*a=*b;*b=c;
 9 }
10 int  main()
11 {
12 int x=3,y=5,*p=&x,*q=&y;
13 //f(p,q);
14 //f(&x,&y);
15 //2个f都可以交换x,y.
16 printf("%d%d",x,y);
17 }
void f(int *p){
    p=p+1;
}
int main()

{
    int x=1,*r=&x;
    f(r);printf("%d
",x);
}
1
1
void f(int *p){
    *p=*p+1;
}
int main()

{
    int x=1,*r=&x;
    f(r);printf("%d
",x);
}
1
2
/*
第 95 题 假定输入的字符串中只包含字母和*号。请编写函数 fun,它的功能是:使字符
串的前导*号不得多于 n 个;若多于 n 个,则删除多于的*号;若少于或等于 n 个,则什么
也不做。字符串中间和尾部的*号不删除。
*/


char a[50];
int n;
void fun(char *a, int n)
{
    
    char *t =a;
    int k=0;
    while(*t=='*'){
        k++;
        t++;
    }
    t=a;
    if(k>n){
        t=a+k-n;
    } 
    int i=0;
    while(*t){
        a[i]=*t;
        i++;
        t++;
    }
    a[i]='';
}
int main(){
    scanf("%s",a);
    scanf("%d",&n);
    fun(a,n);
    printf("%s
",a);
}
 194 题 规定输入字符串中只包含字母和*号。请编写函数 fun,它的功能是:将函数字
 2 符串中的前导*号全部删除,中间和尾部的*号不删除。
 3 
 4 void fun(char *a)
 5 {
 6     
 7     char *t =a;
 8     int k=0;
 9     while(*t=='*'){
10         k++;
11         t++;
12     }
13     t=a+k;
14     int i=0;
15     while(*t){
16         a[i]=*t;
17         i++;
18         t++;
19     }
20     a[i]='';
21 }
/*
第 88 题 假定输入的字符串中只包含字母和*号。请编写函数 fun,它的功能是:除了字
符串前导的*号之外,将串中其他*号全部删除。在编写函数亚时,不得使用 c 语言提供的字
符串函数。
*/

void fun(char *a)
{int i=0;
char *p=a;
while(*p&&*p=='*')
{a[i]=*p;
i++;
p++;}

while(*p)
{if(*p!='*')
{a[i]=*p;
i++;}
p++;}
a[i]='';}
/*
假定输入的字符串中只包含字母和*号。请编写函数 fun,它的功能使:将字符
串尾部的*号全部删除,前面和中间的*号不删除。
*/


void fun(char *a)
{
    char *p,*q;
    p=q=a;
    while(*p)
        p++;
        p--;//最后一个
        while(*p=='*')
            p--;
        int i =0;
            while(q<=p){
                a[i]=*q;
                i++;
                q++;
            }
            a[i]='';
}
/*
已知学生的记录由学号和学习成绩构成,n 名学生的数据已存入 a 结构体数组
中。请编写函数 fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规
定只有一个最低分)。
*/
void f(stu a[],stu *s){
    int i,min;
    min=a[0].s;
    for(int i=0;i<5;i++){
        if(a[i].s>min){
            min=a[i].s;
            *s=a[i];
        }
    }
}

stu a[5],st;
int main()
{
    for(int i=0;i<5;i++){
        a[i].s=i;
    }
    stu *ss =&st;
    f(a,ss);
    printf("%d
",st.s);
    return 0;
}
假定输入的字符串中只包含字母和*号,请编写函数 fun,它的功能是:除了字
符串前导和尾部的*号之外,将串中其他*号全部删除。形参 h 已指向字符串第一个字符,形
参 p 已指向字符串中最后一个字母。在编写程序时,不得使用 c 语言提供的字符串函数。


// h 尾,q 首
void fun(char *s,char *h,char *q,char *t){
    int i=0,j=0;
    while(*q){
        if(*q=='*'){
            i++;
            q++;
        }
        else
            break;
    }
    while(*h){
        if(*h=='*'){
            j++;
            h--;
        }
        else
            break;
    }
    printf("%d %d
",i,j);
    int cnt=0;
    for(int  k=i;k<strlen(s)-j;k++){
        if(s[i]!='*'){
            t[cnt]=s[k];
            cnt++;
        }
    }
}
int   main()
{
    scanf("%s",s);
    char *p=s;
    char *q=s;
    char *h;
    while(*p){
        p++;
    }
    p--;
    h=p;
    fun(s,h,q,t);
    printf("%s
",t);

 1 p:指针 2 p->num 和(*p).num 等价 

原文地址:https://www.cnblogs.com/tingtin/p/9966623.html