代码编织梦想

函数

定义:
函数是数学中的一个概念,它是定义在某个数集上的一个特殊的映射关系。函数将输入值(或自变量)映射到输出值(或因变量)。函数的输入和输出可以是任何类型的数据,如数字、字符串、数组等。

函数的组成:
定义域: 函数的输入值的集合。
值域: 函数的输出值的集合。
对应关系: 输入值与输出值之间的映射关系。
函数的表示方法有多种,常用的有解析法、表格法和图象法。解析法是用数学表达式表示函数,表格法是用表格列出函数的输入值和对应的输出值,图象法则是在坐标系中画出函数的图像。

函数的应用:
函数的应用非常广泛,它可以用于描述各种自然现象和工程问题,如物理、化学、生物学、经济学等领域。在计算机科学中,函数也广泛应用于编程语言和算法设计中。

计算机领域里的函数定义:
在计算机领域,函数的概念通常指的是一种将输入转换为输出的计算方法或操作。它可以是一段代码的执行,可以接收输入并产生输出。这种计算过程可以根据输入的参数或条件进行变化,并产生不同的结果。

计算机领域中的函数通常可以分为两类:系统函数和用户自定义函数。系统函数是由操作系统或编程语言提供的标准函数,用于执行一些常见的操作,如数学运算、字符串处理、文件操作等。用户自定义函数则是由程序员根据特定需求编写的函数,用于实现特定的逻辑或算法。

在编程语言中,函数通常被定义为一个独立的代码块,可以重复使用和调用。函数的定义包括函数的名称、输入参数、返回值和函数体。函数体是实现特定功能的代码块,可以包含逻辑判断、循环、条件语句等。

函数在计算机科学中具有重要的作用,它们可以使代码更加模块化、可重用和可维护。通过将复杂的程序分解为一系列的函数,可以使程序的结构更加清晰,易于理解和维护。同时,函数还可以提高程序的效率和可靠性,因为相同的函数可以在不同的程序中重复使用,避免了重复编写代码和可能出现的错误。

——文心一言

指针

指针定义:
指针是计算机编程中一种特殊类型的变量,它存储了另一个变量的内存地址。通过使用指针,可以直接访问和修改变量的内存地址,从而实现更加灵活和高效的数据处理。

指针的声明和初始化通常需要使用星号(*)操作符。例如,如果有一个整数变量x,可以声明一个指向x的指针变量p,并将其初始化为x的地址,如下所示:

int x = 10;  
int *p = &x;

在这个例子中,变量p是一个指向整数类型的指针,它存储了变量x的内存地址。通过指针p,可以直接访问和修改变量x的值。例如,*p表示指针p所指向的变量的值,而p++则表示将指针p向后移动一个整数大小的内存地址。

指针的应用:
指针在计算机科学中具有广泛的应用,尤其是在底层编程、数据结构、算法等领域。通过使用指针,可以实现动态内存分配、函数参数传递、数据结构操作等复杂的数据处理任务。然而,也需要注意指针使用的安全性和正确性,以避免出现内存泄漏、野指针等问题。

——文心一言

指针函数

定义:
指针函数是指带指针的函数,本质上是一个函数;函数的返回类型是某一类型的指针。

作用:
指针函数可以用来操作内存地址,对数组内数据进行操作。

一般形式:

类型描述
通用<数据类型> *<函数名>(<函数参数列表>)
写法1int *pfun(int, int);
写法2int * func(int, int);
写法3int* func(int, int); #比较常用

取值运算符*的优先级低于圆括号,所以pfun首先和后面圆括号结合。

举例:

#include <iostream>
using namespace std;

int* find_max(int arr[], int size) 
{
    int* max_ptr = &arr[0]; // 假设数组的第一个元素是最大的  

    for (int i = 1; i < size; i++) 
    {
        // 如果当前元素比最大值还大  
        if (*max_ptr < arr[i]) 
        {  
            max_ptr = &arr[i]; // 更新最大值的指针  
        }
    }
    
    return max_ptr; // 返回最大值的指针  
}

int main() 
{
    int arr[] = { 3, 7, 2, 8, 1, 9, 5, 6, 4 };
    
    int size = sizeof(arr) / sizeof(arr[0]); // 计算数组的长度  

    int* max_value_ptr = find_max(arr, size); // 调用指针函数  

    cout << "The maximum value is:" <<  *max_value_ptr << endl;// 通过指针获取最大值并打印出来  

    return 0;
}

因此,利用指针函数就可以找到一个数组中最大值。
在这里插入图片描述

函数指针

定义:
函数指针是指向函数的指针变量,本质是一个指针变量;它指向函数的首地址。

作用:
函数指针允许在运行时候动态地选择要调用的函数;代码的高度复用;提供结构清晰的分层设计和灵活性,便于抽象。

函数的指针和函数指针:
在程序中定义一个函数,在编译时,编译系统为函数代码分配了一段存储空间,这段存储空间的起始地址称为这个函数的指针;而指针函数是指向函数的指针变量。

一般形式:

类型描述
通用<数据类型> (*<函数名>)(<函数参数列表>)
写法int (*pfun)(int, int);

举例:

#include <iostream>
using namespace std;

// 声明一个函数指针类型  
typedef int (*func_ptr)(int, int);

// 定义一个加法函数  
int add(int a, int b) 
{
    return a + b;
}

// 定义一个减法函数  
int subtract(int a, int b) 
{
    return a - b;
}

int main() 
{
    // 声明一个函数指针变量,并初始化为加法函数的地址  
    func_ptr func = add;
    int result = func(3, 4); // 调用加法函数,结果为7  
    printf("Add result: %d\n", result);


    // 修改函数指针变量,指向减法函数的地址  
    func = subtract;
    result = func(3, 4); // 调用减法函数,结果为-1  
    printf("Subtract result: %d\n", result);


    //方法2
    int (*f)(int, int) { add };//函数指针直接指向加法函数
    int (*f2)(int, int) { subtract };//函数指针直接指向减法函数
    printf("Add result2: %d\n", (*f)(3, 4));
    printf("Subtract result2: %d\n", (*f2)(3, 4));

    return 0;
}

可以看到函数指针的灵活性和可复用性。
在这里插入图片描述

备注

c语言的运算符优先级:
在这里插入图片描述

yancey这头小金牛的blog,转载注明出处即可
本文链接:https://blog.csdn.net/yanceyxin/article/details/135662326

stl之deque 【双端队列】-爱代码爱编程

这里写目录标题 STL之deque 【双端队列】头文件:创建deque添加元素删除元素:修改元素:访问元素:遍历队列deque综合示例: STL之deque 【双端队列】 deque:双端队列

华为od机试真题-爱代码爱编程

题目描述: 有一个总空间为100字节的堆,现要从中新申请一块内存,内存分配原则为优先紧接着前一块已使用内存分配空间足够且最接近申请大小的空闲内存。 输入描述: 输入: 第1行是1个整数,表示期望申请的内存字节数; 第2到N行是用空格分割的两个整数,表示当前已分配的内存的情况,每一行表示一块已分配的连续内存空间,每行的第1和第2个整数

《c++ primer》第15章 面向对象程序设计(一)-爱代码爱编程

参考资料: 《C++ Primer》第5版《C++ Primer 习题集》第5版 15.1 OOP:概述(P526) **面向对象程序设计(object-oriented programming)**的核心思想是数据抽

c++初阶-爱代码爱编程

实现模板 #include<assert.h> #include<string.h> #include<iostream> #include<list> using name

受电端协议芯片是如何让type-爱代码爱编程

随着科技的不断进步,USB Type-C接口在电子产品中越来越普及。而在这个接口中,Type-c受电端协议芯片起着至关重要的作用。那么,什么是Type-c受电端协议芯片?它又是如何工作的呢?本文将为您揭开Type-c受电端协

【c++】异常-爱代码爱编程

目录 1. C语言传统的处理错误的方式2. C++异常概念3. 异常的使用3.1 异常的抛出和捕获3.2 异常的重新抛出3.3 异常安全3.4 异常规范 4. 自定义异常体系5. 异常的优缺点

c++大学教程(第九版)6.29素数-爱代码爱编程

题目 (素数)素数是只能被1和自已整除的整数。例如,235和7是素数而468和9不是素数 a)编写一个函数,确定一个数是否是素数。 b)在程序中使用这个函数,该程序确定和打印2 ~10000之间的所有素数。在确信已找到所有

【c++】智能指针-爱代码爱编程

目录 1. 为什么需要智能指针2. 智能指针的使用和原理2.1 RAII2.2 原理2.2.1 auto_ptr2.2.2 unique_ptr2.2.3 shared_ptr2.2.3.1 循环引用2.2.3

引用可以指向基类对象或派生类对象,因此需要动态联编。c++使-爱代码爱编程

隐式向上强制转换使基类指针或引用可以指向基类对象或派生类对象,因此需要动态联编。C++使用 虚成员函数来满足这种需求。 13.4.4 虚拟成员函数和动态联编 我们来回顾一下使用引用或指针调用方法的过程。请看下面的代码: BrassPlus ophelia; Brass * bp: bp = Gophelia: bp->ViewAcct {): 正

c++大学教程(第九版)6.24数字分离6.25秒数计算-爱代码爱编程

6.24题目 (数字分离)编写程序段,分别实现如下任务。 a)计算整数a除以整数b得到的商的整数部分。 b)计算整数 a 除以整数 b得到的整数余数。 c)利用在a)和b)中开发的程序片段编写一个函数,该函数输入1~327

c语言常见面试题:什么是宏,宏的作用是什么?-爱代码爱编程

宏在计算机科学中是一种批量处理程序命令,它是一种抽象的规则或模式,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是字符串)。在编译时,预处理器会对宏进行展开,即将宏的内容替换到宏所在的位置。 宏的作用主要有以下几点: 提高效率:通过宏,可以将常用的命令或代码块组织在一起,作为一个单独的命令来使用。这样可以在需要时重复使

c语言从入门到实战——文件操作-爱代码爱编程

文件操作 前言一、 为什么使用文件二、 什么是文件2.1 程序文件2.2 数据文件2.3 文件名 三、 二进制文件和文本文件四、 文件的打开和关闭4.1 流和标准流4.1.1 流4.1.2 标准流

c——语言内存函数-爱代码爱编程

目录 一、memcpy的使用和模拟实现 1.memcpy函数原型 2.memcpy函数的使用 3.memcpy函数的模拟实现 二、memmove的使用和模拟实现 1.memmove函数原型 2.memmove函数的使用 3.memmove函数的模拟实现 三、memset的使用 1.memset函数原型 2.memset函数的使用 四