C++语言之指针

C++中的指针是一个变量,其值为另一个变量的地址。 指针变量声明需要使用星号(*),而取地址运算符&用于获取变量的地址。指针有许多用途,包括动态分配内存、在函数之间传递参数以及访问数组和字符串。下面会介绍指针。


目录

1.常见的指针操作

1.1 定义指针变量

1.2 获取变量的地址

1.3 解引用指针

1.4 动态内存分配

1.5 释放内存

2.指针和数组

3.指针与函数

4.例题


1.常见的指针操作

1.1 定义指针变量

定义一个指针变量需要使用星号(*)。

格式如下:

类型说明符 *变量名;

例如:

int *ptr;

这将定义一个名为ptr的指针变量,它可以指向一个整数值。

1.2 获取变量的地址

获取变量的地址需要使用取地址运算符&。

例如:

int var = 5; int *ptr = &var;

这将把var的地址存储在ptr指针变量中。

1.3 解引用指针

解引用指针意味着访问指针所指向的变量,需要使用间接运算符(*).

例如:

int var = 5;
int *ptr = &var;

// 解引用ptr指针并给变量赋值
*ptr = 10;

现在var的值为10,因为ptr指向var并通过解引用指针修改了它的值。

注意:指针变量直接存储的是内存地址(不加“*”的),间接存储的才是存储类型的值(加了“*”的)。

1.4 动态内存分配

动态内存分配是指在运行时分配内存,需要使用new运算符。

例如:

int *ptr = new int;

这将在堆上分配一块大小为sizeof(int)的内存,并返回其地址。

1.5 释放内存

可以使用delete运算符释放内存。

例如:

delete ptr;

2.指针和数组

数组名本质上是一个指针,它指向数组的第一个元素,可以使用指针访问数组元素

例如:

int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr;

// 访问数组元素
cout << ptr[0] << endl;  // 输出1
cout << ptr[1] << endl;  // 输出2
3.指针和函数

3.指针与函数

指针可以用于在函数之间传递参数,例如:

void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

int main() {
    int x = 5, y = 10;
    swap(&x, &y);
    cout << x << " " << y << endl;  // 输出10 5
}

在swap函数中,a和b分别是指向x和y的指针。通过解引用指针可以交换它们的值。在主函数中,使用取地址运算符&将x和y的地址传递给swap函数。

4.例题

【题目描述】

已知每个月份的英文单词如下,要求创建一个指针数组,数组中的每个指针指向一个月份的英文字符串,要求根据输入的月份数字输出相应的英文单词

1月 January 

2月 February

3月 March

4月 April

5月 May

6月 June

7月 July

8月 Aguest

9月 September

10月 October

11月 November

12月 December

【输入】

第一行输入t表示t个测试实例

接着每行输入一个月份的数字

依次输入t行

【输出】

依次输出月份数字相应的英文单词

【输入样例】

3

5

7

2

【输出样例】

May

July

February

#include <iostream>
using namespace std;
 
int main()
{
	const char* pmonth[12] = {"January","February","March","April","May","June","July","Aguest","September","October","November","December"};
	int t;
	int ch;
	cin >> t;
	for (int i = 0; i < t; i++)
	{
		cin >> ch;
		if (ch <= 12 && ch >= 1)
		{
			cout << pmonth[ch - 1] << endl;
		}
		else
			cout << "error" << endl;
	}
 
	return 0;
}

创作不易,白嫖不好,各位的支持和认可,就是我创作的最大动力,如果喜欢我的文章,给个关注吧!

冰焰狼 | 文

如果本篇博客有任何错误,请批评指教,不胜感激 !

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值