c++ 函数

函数:

函数返回值本身可以是常量,变量.若返回类型为double但返回的是int类型,则会强制转换.

C++对返回值的一个限制是-----不能是数组(但传入数组头指针和长度,返回地址就好),可以是其他任何类型,包括结构和对象.

原型描述函数到编译器的接口,描述了函数返回值的类型,和参数的类型,因此函数的原型不要求提供变量名,有类型列表就好了

函数被调用时,会创建一个新的与参数同名同类型的变量,并将其初始化,因此函数内部对参数的处理不会影响函数原来的数据.

1.如何使用指针来处理数组

用数组名来标记储存位置,对数组名使用sizeof将得到整个数组的长度. 取址符用于数组名将放回整个数组的地址(整个内存块的地址).

cin >> temp;  // 从输入读取一个值到变量 temp

if (!cin) {
    // 检查 cin 的状态,如果输入失败(可能是因为输入的值不符合预期类型),则进入这个条件
    // 在这里可以处理输入失败的情况
    cin.clear();  // 清除错误状态
    cin.ignore(numeric_limits<streamsize>::max(), '\n');  // 清空输入缓冲区
}

数组处理函数的常用编写方式

如果函数要修改数组:

void modify(double ar[], int n);

如果函数不修改数组:

void no_modify(const double ar[], int n);

2二维数组当作函数参数

//当二维数组当作函数参数
int data[3][4] = {{....},{..},{..}};
一般上第一个参数为int (*data) [4] 或者 Int ar2[][4] 
     第二个为row


ar2[r][c] == *(*sr2 + r) + c)

3.将c风格字符串当作函数参数

1.char数组

2.用" "括起的字符串常量

3.被设置为字符串的地址的char指针

其中char ghost [15] = "galloping";

        char *str = "galloping";    其中ghost和str都代表首地址

在函数中处理字符串中字符的方式:
while (*str)
{
    ...;
    str++;
}
其中只要字符不为空值字符'\0' ,*str就为非零值,因此循环继续

 返回字符串首地址:

cout <<字符串首地址 ->可以返回整个字符串.

3. 结构体可以作为函数的参数,返回值

4.将string数组作为参数传入函数时,可以将起参照int数组

#include <iostream>

int add(int a, int b)
{
    return a + b;
}

int subtract(int a, int b)
{
    return a - b;
}

int main()
{
    // 声明一个函数指针,并将其初始化为指向add函数
    auto func_ptr = add;

    // 使用函数指针调用add函数
    int result = func_ptr(5, 3);
    std::cout << "Addition result: " << result << std::endl;

    // 将函数指针指向subtract函数
    func_ptr = subtract;

    // 使用函数指针调用subtract函数
    result = func_ptr(5, 3);
    std::cout << "Subtraction result: " << result << std::endl;

    return 0;
}

在这个示例中,我们首先定义了两个函数add()subtract(),它们分别接受两个整数参数并返回结果。

然后,在main()函数中,我们声明了一个auto类型的变量func_ptr,它是一个函数指针。通过将其初始化为add函数,func_ptr现在指向add函数。

我们使用函数指针调用add函数,并将结果存储在result变量中,然后将结果打印出来。

接下来,我们将函数指针重新赋值为subtract函数,然后再次使用函数指针调用subtract函数,并将结果存储在result变量中,并打印出来。

这个示例展示了如何使用auto关键字声明一个函数指针类型的变量,并将它与不同的函数进行动态绑定和调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值