算法精解----1、指针与递归

本文详细探讨了C语言中的指针概念,包括指针作为存储内存地址的变量,指针类型,结构体中的指针使用,以及数组与指针的关系。此外,还介绍了递归的基本原理,包括常规递归可能导致的空间占用问题以及尾递归的概念,并通过实例展示了尾递归在优化上的优势。
摘要由CSDN通过智能技术生成

一、指针
1、
指针只是一个变量,它存储数据在内存中的地址而不是存储数据本身。

C语言中指针变量拥有和其他变量一样的类型。

当声明一个指针时,仅仅是为指针本身分配了空间,并没有为指针所引用的数据分配空间。

结构不允许包含自身的实例,但可以包含指向自身实例的指针。

指针的运算是加减对应指向数据类型的字节数。

数组*(*(a+i)+j) a是个二维指针,先指向某行,在指向某列。对于二维数组声明,列元素个数必须固定如a[][3],二维数组由一维数组连续构成。

未初始化的指针是潜在的危险,应该char *p=NULL;

2、函数指针(也是一个变量:指针变量)

int (*fun_p)(void *p1, void *p2);
fun_p=fun;
a=fun_p(&x, &y);

二、递归

1、基本递归
这里写图片描述

int factorial(int n)
{
    if((n == 1) || (n == 0))
    {
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值