📜  C C++中的指针与示例(1)

📅  最后修改于: 2023-12-03 14:59:36.342000             🧑  作者: Mango

C/C++中的指针与示例

指针是C/C++的核心概念之一,掌握指针是成为一名合格程序员的重要基础。本文将详细介绍指针的定义、用法及示例。

指针的定义

指针是一个变量,存储的是另一个变量的地址。使用指针可以直接访问或修改存储在给定地址上的变量的值。

指针的声明格式为:数据类型 * 指针变量名

其中,数据类型表示指针指向变量的数据类型,*表示指针类型的声明符,指针变量名表示指针变量本身的名称。例如,下面的代码声明了一个指向int类型变量的指针变量ptr:

int *ptr;
指针的用法
  1. 取地址运算符&

&是一元运算符,用于返回其操作数的地址。例如,&a表示变量a的地址。

int a = 5;
int *ptr = &a; // ptr指向变量a的地址
  1. 解引用运算符*

*也是一元运算符,用于返回指针所指向地址储存的变量的值。例如,*ptr表示ptr指针所指向的地址中储存的值。

int a = 5;
int *ptr = &a;
cout << *ptr << endl; // 输出变量a的值5
  1. 指针的基本操作

定义和初始化指针变量后,可以进行以下操作:

int a = 5;
int *ptr = &a; // 定义并初始化ptr指针变量,指向变量a的地址
cout << "a的值:" << a << endl; // 输出变量a的值
cout << "a的地址:" << &a << endl; // 输出变量a的地址
cout << "ptr指针的地址:" << &ptr << endl; // 输出ptr指针的地址
cout << "ptr指向的地址:" << ptr << endl; // 输出指向的地址
cout << "ptr指向的地址中储存的值:" << *ptr << endl; // 输出ptr指向的地址中储存的值

输出结果为:

a的值:5
a的地址:0x7fff5fbff7e4
ptr指针的地址:0x7fff5fbff7e8
ptr指向的地址:0x7fff5fbff7e4
ptr指向的地址中储存的值:5
示例
示例1:交换两个变量的值

使用指针可以方便地交换两个变量的值,具体做法是:定义一个指向数据类型的指针变量,将其初始化为变量的地址,然后使用解引用运算符*访问该地址中储存的变量的值。

void swap(int *a, int *b) { // 使用指针交换两个变量的值
    int temp = *a;
    *a = *b;
    *b = temp;
}

int main() {
    int x = 5, y = 10;
    cout << "交换前:x=" << x << ",y=" << y << endl;
    swap(&x, &y);
    cout << "交换后:x=" << x << ",y=" << y << endl;
    return 0;
}

输出结果为:

交换前:x=5,y=10
交换后:x=10,y=5
示例2:指针数组

指针数组是数组的每个元素都是指向同一类型变量的指针。下面的代码示例定义了一个指针数组,其中每个指针都指向一个整数。

int main() {
    int a = 5, b = 10, c = 15;
    int *ptr[3] = {&a, &b, &c}; // 定义指针数组,每个元素都是指向int类型变量的指针
    for(int i=0; i<3; i++) {
        cout << "指针ptr[" << i << "]指向的地址中储存的值:" << *ptr[i] << endl;
    }
    return 0;
}

输出结果为:

指针ptr[0]指向的地址中储存的值:5
指针ptr[1]指向的地址中储存的值:10
指针ptr[2]指向的地址中储存的值:15
示例3:指向函数的指针

函数指针可以指向函数的地址,如果定义一个指向函数的指针,可以通过该指针来调用该函数。

#include <iostream>
using namespace std;

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

int main() {
    int (*p)(int, int);
    p = add; // 将指针p指向add函数
    int result = (*p)(2, 3); // 使用指针调用add函数
    cout << "2 + 3 = " << result << endl;
    return 0;
}

输出结果为:

2 + 3 = 5
总结

本文介绍了指针的定义、用法及示例,指针是C/C++中重要的概念之一,掌握指针可以更好地理解和使用指针类型的数据,开发更强大、高效的程序。在实际开发中,指针常常用于数组、函数、结构体等数据类型中,是实现复杂算法和数据结构的重要基础。