C++ 解引用与函数基础详解之内存地址、调用方法及声明
C++ 解引用
获取内存地址和值
在上一页的示例中,我们使用了指针变量来获取变量的内存地址(与引用运算符 &
一起使用)。但是,你也可以使用指针来获取变量的值,这可以通过使用 *
运算符(解引用运算符)来实现:
string food = "Pizza"; // 变量声明 string* ptr = &food; // 指针声明 // 引用:使用指针输出 food 的内存地址(0x6dfed4) cout << ptr << "\n"; // 解引用:使用指针输出 food 的值(Pizza) cout << *ptr << "\n";
需要注意的是,符号 *
在这里可能会让人感到困惑,因为它在我们的代码中有两种不同的作用:
- 在声明中使用时(
string* ptr
),它创建一个指针变量。 - 在非声明中使用时,它作为解引用运算符。
修改指针值
你可以改变指针的值。但要注意,这也会改变原始变量的值:
string food = "Pizza"; string* ptr = &food; // 输出 food 的值(Pizza) cout << food << "\n"; // 输出 food 的内存地址(0x6dfed4) cout << &food << "\n"; // 访问 food 的内存地址并输出其值(Pizza) cout << *ptr << "\n"; // 改变指针的值 *ptr = "Hamburger"; // 输出指针的新值(Hamburger) cout << *ptr << "\n"; // 输出 food 变量的新值(Hamburger) cout << food << "\n";
解引用指针的注意事项
- 解引用指针时,要确保指针指向有效的内存地址,否则会导致程序崩溃。
- 不要解引用空指针,这会导致程序崩溃。
- 修改指针的值可能会导致意外的结果,应谨慎操作。
总结
解引用是 C++ 中一个重要的概念,它允许你获取指针指向的变量的值或内存地址。在使用解引用运算符时,要遵循一些注意事项,以避免程序崩溃或意外结果。
C++ 函数
函数概述
函数是一组用于执行特定任务的封装代码块。它们可以提高代码的可重用性、可读性和可维护性。
创建函数
在 C++ 中,创建函数需要遵循以下语法:
returnType functionName(parameterList) { // 函数体 }
其中:
returnType
:函数的返回值类型,可以是void
(无返回值)或其他数据类型。functionName
:函数名称,由字母、数字和下划线组成,但不能以数字开头。parameterList
:函数参数列表,参数之间用逗号分隔,每个参数由数据类型和参数名组成。函数体
:函数要执行的代码,由花括号括起来。
例如,以下代码创建了一个名为 printMessage
的函数,该函数接收一个字符串参数并将其打印到控制台:
void printMessage(string message) { cout << message << endl; }
函数调用
要调用函数,只需在代码中写下函数名及其参数值,例如:
printMessage("Hello, world!");
函数参数
函数参数可以是输入参数、输出参数或输入输出参数。
- 输入参数:函数从调用者接收数据。
- 输出参数:函数将数据返回给调用者。
- 输入输出参数:函数既可以接收数据又可以返回数据。
在 C++ 中,函数参数默认是输入参数。要声明输出参数或输入输出参数,需要使用引用或指针。
函数返回值
函数可以返回一个值给调用者。返回值类型写在函数声明的括号前面,例如:
int square(int number) { return number * number; }
该函数接收一个整数参数 number
,并返回其平方值。要调用该函数并获取返回值,可以使用以下代码:
int result = square(5); cout << result << endl; // 输出 25
函数声明和定义
函数声明告诉编译器函数的名称、返回值类型和参数列表,而函数定义提供了函数要执行的代码。
函数声明通常放在程序的开头,而函数定义放在后面。例如:
// 函数声明 void printMessage(string message); int square(int number); // ... // 函数定义 void printMessage(string message) { cout << message << endl; } int square(int number) { return number * number; }
函数重载
函数重载是指允许使用相同名称但不同参数列表的多个函数。例如:
void printMessage(string message) { cout << message << endl; } void printMessage(int number) { cout << number << endl; }
在调用这些函数时,需要根据实际参数类型选择正确的函数。
函数的作用域
函数的作用域是指函数内的变量和函数名在程序中可见的范围。函数内的变量和函数名只在该函数内可见,在其他函数中不可见。
总结
函数是 C++ 中重要的编程概念,它们可以提高代码的可重用性、可读性和可维护性。通过理解函数的声明、定义、调用和参数传递等概念,您可以编写更简洁、更有效的 C++ 程序。
到此这篇关于C++ 解引用与函数基础:内存地址、调用方法及声明的文章就介绍到这了,更多相关C++ 解引用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
详解c++ atomic原子编程中的Memory Order
在多核编程中,我们使用内核对象【如:事件对象(Event)、互斥量对象(Mutex,或互斥体对象)、信号量对象(Semaphore)等】来避免多个线程修改同一个数据时产生的竞争条件。本文将详细介绍c++ atomic原子编程中的Memory Order。2021-06-06
最新评论