0331.h

#ifndef _0331_H
#define _0331_H
/*******************************************************************
* 文件名称:0331.h
* 功能描述:函数的定义和调用的头文件
* 创建作者:wenjie
* 创建日期:2023/03/31
*******************************************************************/ typedef struct {
int x;
int y;
} Point; //------------------------------------------------------------------
// 函数声明
//------------------------------------------------------------------
/**
* @brief 计算两个数的和
*
* @details 这个函数使用加法运算符计算两个整数之和
*
* @param a 第一个加数
* @param b 第二个加数
* @return 两个数的和
*/
int add(int a, int b); /**
* @brief 指针传递
*
* @details 指针传递
*
* @param ptr 传入实参地址
* @return 无
*/
void foo(int *ptr); /**
* @brief 引用传递
*
* @details 定义函数,使用引用传递
*
* @param a
* @param b
* @return 无
*/
//
void swap(int &a, int &b); void print_point(Point p); void print_string(const char *str); #endif //_0331_H

0331.cpp

/*******************************************************************
* 文件名称:0331.cpp
* 功能描述:函数的定义和调用的实现
* 创建作者:wenjie
* 创建日期:2023/03/31
*******************************************************************/ #include "0331.h"
#include <iostream> int main() { // 调用 add 函数,计算 3 和 5 的和
int sum = add(3, 5);
// 打印计算结果
std::cout << sum << std::endl; int x = 1; //&x为1的门牌号(地址)
foo(&x); // 传递实参的地址
printf("%d\n", x); // 输出 42 int x2 = 1, y = 2;
swap(x2, y); // 传递实参的别名
printf("%d %d\n", x2, y); // 输出 2 1 Point p = { 1, 2 };
print_point(p); const char *str = "Hello, world!";
print_string(str); return 0; } /**
* @brief 计算两个数的和
*
* @details 这个函数使用加法运算符计算两个整数之和
*
* @param a 第一个加数
* @param b 第二个加数
* @return 两个数的和
*/
int add(int a, int b) {
return a + b;
} /**
* @brief 指针传递
*
* @details 指针传递
*
* @param ptr 传入实参地址
* @return 无
*/
void foo(int *ptr) {
*ptr = 42; // 修改实参的值 } /**
* @brief 引用传递
*
* @details 定义函数,使用引用传递
*
* @param a
* @param b
* @return 无
*/
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
} // 打印结构体成员
void print_point(Point p) {
printf("(%d, %d)\n", p.x, p.y);
} void print_string(const char *str) {
/*
是的,你说得没错。在函数内部,可以修改指针本身,但不能修改指针所指向的常量的值。
在你的代码中,指针 str 是一个形参,它被声明为指向常量字符的指针。这意味着,该指针所指向的字符数组是只读的,不能被修改。
在函数内部,如果你试图通过指针 str 来修改其所指向的字符串的内容,编译器会发出警告或错误信息。
而如果你仅仅是修改指针本身的值,那么编译器并不会报错。
因此,在下面的代码中,指针 str 指向了一个新的字符串常量,但原有的字符串 "Hello, world!" 并没有被修改:
输出结果应该是 hbashab,而不是 "Hello, world!"。这表明在函数内部,指针 str 确实被修改了,但原始字符串并没有被改变。
*/
//str = "hbashab";
printf("%s\n", str);
}

day3 函数的定义和调用,练习编写简单的程序(记录3)的更多相关文章

  1. Python函数的定义与调用、返回值、参数

    一.函数是什么 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.比如print(),len()等.但你也可以自己创建函数,这被叫做用户自 ...

  2. Kotlin基础(二)函数的定义与调用

    函数的定义与调用 一.预备知识:在Kotlin中创建集合 fun main(args: Array<String>) { //Kotlin中定义各自集合 val ,,,) val list ...

  3. 12_传智播客iOS视频教程_注释和函数的定义和调用

    OC的注释和C语言的注释一模一样.它也分单行注释和多行注释. OC程序里面当然可以定义一个函数.并且定义的方式方法和调用的方式方法和我们C语言是一模一样的.OC有什么好学的?一样还学个什么呢? 重点是 ...

  4. python中函数的定义及调用

    python中函数的定义及使用方法 1.函数的概念:函数是将具有独立功能的代码块组织为一个整体,使其具有特殊功能的代码集; 2.函数的作用:使用函数可以加强代码的复用性,提高程序编写的效率; 3.函数 ...

  5. C#基础知识-函数的定义和调用(五)

    函数也可以称为方法,可以很方便的把一些行为封装到函数里面,当调用这一函数时会把函数块里面的代码按照顺序执行,方法可以有多种形式,有无参数,有无返回值等. 1. 函数的定义   函数定义的基本格式: s ...

  6. JavaScript学习笔记(七)——函数的定义与调用

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  7. Python基础--函数的定义和调用

    一.函数的作用: 提高代码的可读性,减少代码的冗余,方便调用和修改,组织结构清晰 二.函数的定义:函数遵循先定义后调用的原则 1.无参函数 def funcname(): #def 是关键字,后跟函数 ...

  8. python基础----函数的定义和调用、return语句、变量作用域、传参、函数嵌套、函数对象、闭包、递归函数

    1.函数的定义: 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可 ...

  9. python中函数的定义与调用

    1.为什么要用函数? (1)代码重复太多(2)可读性差 使用函数的好处: (1)代码重用 (2)保持一致性,易维护 (2)可扩展性 2.初始函数定义与调用     函数的定义 def test(x): ...

  10. Swift 函数的定义与调用(Defining and Calling Functions)

    当你定义一个函数时,你能够定义一个或多个有名字和类型的值.作为函数的输入(称为參数.parameters).也能够定义某种类型的值作为函数运行结束的输出(称为返回类型). 每一个函数有个函数名,用来描 ...

随机推荐

  1. RabbitMq的部署(docker)和操作(python)详解

    一.简介: RabbitMq 是实现了高级消息队列协议(AMQP)的开源消息代理中间件.消息队列是一种应用程序对应用程序的通行方式,应用程序通过写消息,将消息传递于队列,由另一应用程序读取 完成通信. ...

  2. python3中的负数整除、求余问题

    注:小白问题,大神们请忽略先看示例,非整除: >>> -10/3-3.3333333333333335>>> 10/-3-3.3333333333333335> ...

  3. vs xamarin获取sha1申请百度sdk密钥

    请查看微软帮助文档 查找密钥存储的签名 - Xamarin | Microsoft Docs

  4. DEM高程数据下载资源

    最近发现了几个比较好的DEM高程数据免费下载资源,遂总结一下. clouldRF(https://cloudrf.com/terrain%20data)官方网站有说明其支持的地形数据来源,主要包括如下 ...

  5. Spring日志与SpringBoot日志

    本篇意为说明Spring默认日志实现与SpringBoot默认日志实现. 1.日志 在这之前,我们应该先了解一些日志框架. 具体可以看我这篇随笔:https://www.cnblogs.com/dai ...

  6. C# 事件 初学

    1.事件是可以动态添加和删除操作的,如下>>> 添加: ctr.Click+=ctr_Click; 删除:ctr.Click-=ctr_Click; 2.同一控件相同事件可累加不同事 ...

  7. spacy

    官方文档: https://spacy.io/api Spacy功能简介 可以用于进行分词,命名实体识别,词性识别等等,但是首先需要下载预训练模型 pip install --user spacy p ...

  8. python 每天一个知识点 对文件的操作

    对文件的操作: 操作 功能 文件对象 = open(file,mode,encoding) 打开文件获取文件对象 文件对象.read(num) 读取指定长度字节,不指定num读取文件全部 文件对象.r ...

  9. Hive启动留下的RunJar进程不能使用Kill -9 杀不掉怎么办?

    1.问题示例 [Hadoop@master Logs]$ jps 3728 ResourceManager 6976 RunJar 7587 Jps 4277 Master 3095 NameNode ...

  10. LockSupport实现线程同步

    public class LockSupport01 { static Thread t1 = null, t2 = null; public static void main(String[] ar ...