IOS开发入门之iOS开发系列----C语言(指针及递归函数)
白羽 2018-11-21 来源 :网络 阅读 1392 评论 0

摘要:本文将带你了解IOS开发入门iOS开发系列----C语言(指针及递归函数),希望本文对大家学IOS有所帮助。

    本文将带你了解IOS开发入门iOS开发系列----C语言(指针及递归函数),希望本文对大家学IOS有所帮助。



        

指针及递归函数概述

1.认识指针

【地址】内存每个字节都有一个数字的编号,称为地址。

【指针】指针是一个变量,用来装地址。

【注】指针是地址变量,地址是指针常量

2.指针的作用

①同一个栈内的数据处理,使用指针没有意义;

②指针就是用来访问栈外面的空间;

③指针就是用来跨栈的

3.空指针和野指针

【空指针】值为0的指针(NULL)

【野指针】指针的值未知,或者说指向了未知的地方

【泛型指针】void *p

4.函数的递归调用

调用自身的函数,称为递归函数,调用自身的行为称为递归调用?【注】函数的递归调用只能用于静态的数据运算,如果是动态数据,风险过高,容易崩溃。

方法

①首先确定临界值,即无需计算,获得的值;

②找这一次和上一次的关系;

③假设当前函数已经可以使用,调用自身计算上一次的运行结果,再写出这次的运行结果

指针及递归函数讲解

1.递归函数


   

//栈空间溢出

 

int func(int n) {

 

    if (n == 1) {

 

    return 1;

 

}

 

    return func(n - 1) + n;

 

}

 

//任何函数都可以调用任何函数

int main(int argc, const char * argv[]) {

 

    printf("%d",func(4));

 

    return 0;

 

}

   

2.认识指针

当一个指针p,装了变量a的地址,称为p指向了a。


   

//取变量的地址,取的是变量的首地址。

int a = 5;

int *p = &a;

*p = a;

   

【注】p:根据p里面存的地址,找到这个地址,取这个类型的大小,它是一个运算,相当于&a,找到地址为&a的那个字节,取*p个字节,得到一个变量,就是a。举个例子:p就相当于天猫,a是我们,p=&a是填写物流地址的过程,*p就是送货,整个过程为注册—邮寄地址—送货的过程


   

int main(int argc, const char * argv[]) {

 

    //声明整型变量a,存储数字5,用相应指针指向a,通过指针,将a修改成6.

 

    int a = 5;

 

    int * p;

 

    //用相应指针指向a

 

    p = &a;

 

    //  通过指针,将a修改成6.

 

    *p = 6;

 

    printf("a=%d\n",a);

 

    return 0;

 

}

   

2.指针的加法运算:?指针+1,加一个*p的字节数,加一个p指向变量的字节数


   

int main(int argc, const char * argv[]) {

 

    char c;

 

    int a;

 

    int *p = &a;

 

    //p+1与p相比增加了4字节

 

    printf("%p\n",p);

 

    printf("%p\n",p+1);

 

    //q+1比q增加了一个字节

 

    char *q = &c;

 

    printf("%p\n",q);

 

    printf("%p\n",q+1);

 

    return 0;

 

}

   

3.指针与数组:数组是指针的常量,指针是数组的变量


   

int main(int argc, const char * argv[]) {

 

    int a[5] = {1,3,5,7,10};

 

    //数组名是数组首元素地址

 

    int * p = &a[0];

 

    printf("p = %p\n",p);

 

    printf("p+1 = %p\n",p+1);

 

    //取到首元素

 

    *p = a[0];

 

    printf("*p = %d\n",*p);

 

    printf("*(p+1)=%d\n",*(p+1));

 

    printf("*p+1=%d",*p+1);

 

    //指针+1,加的是一个*p所指向类型的字节大小

 

    *(p+1) = a[1];

 

    //数组名是数组首元素地址

 

    p = a;

 

    return 0;

 

}

   

小练习
编写函数,将两个整型变量的和,赋给第一个变量,差赋给第二个变量。

参考答案(一万个读者有一万个哈姆雷特,一万个程序员有一万种编码风格,答案仅供参考)
编写函数,将两个整型变量的和,赋给第一个变量,差赋给第二个变量。


   

void entrust(int * a,int * b) {

 

    int c = *a;

 

    *a = *a + *b;

 

    *b = c - *b;

 

}

 

int main(int argc, const char * argv[]) {

 

    int p = 5;

 

    int q = 2;

 

    entrust(&p, &q);

 

    return 0;

 

}

   

          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved