《IOS_C语言》指针



#import <Foundation/Foundation.h>
//交换实参数值:
void jiaohuan(float *a,float *b){
    float temp=*a;
    *a=*b;
    *b=temp;
}

 //2.    (****)面试题:有一字符串中包含数字与字符,请编程去除数字
    char* deleteNumber(char *str){//返回是一个指针变量名str,则定义char* 字符型指针的函数
        char *w,*r;
        w=r=str;
        //指针变量赋值,也就是指针变量w,r,和str指针变量所指向的字符串数组是一样的
        //char string[]="sdhgkjahlashio23klk34123lk431";
        //char *str=string;
        //因此str="sdhgkjahlashio23klk34123lk431",再赋给p和q,
        //下面则通过指针来改变该字符串
        while (*r!='\0') {
            if (!(*r>='0'&&*r<='9'))
            {
                *w=*r;//修改str字符串,不是数字则赋给w指针变量所指向的字符串(跟str的指针变量所指向的字符串数组是一样的)
                w++;//赋值后自增一,w遇到不是数字时才递增,遇到数字则不会移动位置
            }
            r++;//读指针如果遇到数字,则直接忽略它继续读r下一位,并且无论是不是字母,都一个一个的遍历,移位
        }
        *w='\0';//执行完以下后,给写指针的值加多一个'\0'结束符号
        return str;//再次输出修改完后的字符串str指针变量指向的字符串数组,因为在上面的过程修改的就是该字符串数组
    }
    
int main(int argc, const char * argv[]) {
    //1.    (**)编写一个函数,交换2个浮点数
    //    float a=8.4;
    //    float b=5.67;
    //    printf("a=%.3f,b=%.3f\n",a,b);
    //    jiaohuan(&a, &b);
    //    printf("a=%.3f,b=%.3f\n",a,b);
    
//2.    (****)面试题:有一字符串中包含数字与字符,请编程去除数字
        char string[]="sdhgkjahlashio23klk34123lk431";
        char *str=string;
    //char *p="sdhgkjahlashio23klk34123lk431";错误的做法,因为直接把字符串赋给指针变量p则不会改变该字符串,如果硬是这样子,则会导致下面删减字符串的部分数据时:*(q+count)=*(p+count)赋值出错,程序会崩溃,不能实现该功能
    
        //方法一;不用函数调用
        //    int count =0;
        //    char *q;
        //    while (*(p+count)!='\0') {
        //            if (!(*(p+count)>='0'&&*(p+count)<='9'))
        //            {
        //                *(q+count)=*(p+count);
        //                printf("%c",*(q+count));
        //                q++;
        //            }
        //              p++;
        //        
        //    }
        //方法二:使用函数调用
        char *b=deleteNumber(str);
        printf("%s\n",b);
        return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大小小丹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值