当前位置: 首页 > news >正文

258做网站怎么样商务邮箱注册

258做网站怎么样,商务邮箱注册,望野是什么意思,网页升级跳转自动刷新文章目录 一、指针1、定义2、解引用3、指针的运算4、指针与数组4.1、通过指针操作数据4.2、指针与数组名的区别4.3、数组名作为函数形参 5、指针作为函数参数5.1、作为函数参数5.2、常指针与指针常量 6、指针与动态内存分配7、注意事项8、总结 前言: 在C编程中&…

文章目录

  • 一、指针
    • 1、定义
    • 2、解引用
    • 3、指针的运算
    • 4、指针与数组
      • 4.1、通过指针操作数据
      • 4.2、指针与数组名的区别
      • 4.3、数组名作为函数形参
    • 5、指针作为函数参数
      • 5.1、作为函数参数
      • 5.2、常指针与指针常量
    • 6、指针与动态内存分配
    • 7、注意事项
    • 8、总结

前言:

在C++编程中,指针是一种非常重要的概念。它们允许程序直接访问内存地址,从而提供对数据的高效操作和灵活控制。本文将详细介绍C++中的指针定义、使用、操作以及一些注意事项。

一、指针

1、定义

指针是一个变量,其存储的是另一个变量的内存地址,而不是数据值本身。在 C++ 中,每个变量都有一个内存地址,而指针就是用来存储这些地址的变量。指针的声明通常通过在变量类型前加上星号(*)来完成。

int a = 10;       // 定义一个整型变量 a,并赋值为 10  
int *ptr = &a;    // 定义一个整型指针 ptr,并将 a 的地址赋给 ptr

2、解引用

解引用是指通过指针访问它所指向的变量的值。解引用使用星号(*)运算符。例如:

int value = *ptr; // 通过指针 ptr 解引用,获取它所指向的变量 a 的值,并赋值给 value

3、指针的运算

指针可以进行一些基本的算术运算,如加减整数,以及比较运算。这些运算都是基于指针所指向的内存地址进行的。例如:

int arr[5] = {1, 2, 3, 4, 5};  
int* p = &arr[0];  // p 指向数组的第一个元素  // 指针加法  
int* q = p + 2;    // q 指向数组的第三个元素(索引为 2 的元素)  // 指针减法  
int diff = q - p;  // diff 的值为 2,因为 q 和 p 之间相隔两个元素

4、指针与数组

4.1、通过指针操作数据

在 C++ 中,数组名可以被视为指向数组第一个元素的指针。因此,数组和指针在很多情况下可以互换使用。例如:

int arr[5] = {1, 2, 3, 4, 5};  
int* p = arr;  // 数组名 arr 实际上是指向数组第一个元素的指针,因此可以直接赋值给指针 p

通过指针遍历数组:

for (int i = 0; i < 5; ++i) {  std::cout << *(p + i) << std::endl; // 通过指针 p 遍历数组  
}

4.2、指针与数组名的区别

指针与数组名区别如下:

指针数组名
概念是一个变量,存储的数据是地址代表的是该数组最开始的一个元素的地址
sizeof指针变量的大小计算数组占用的内存大小,通过sizeof(数组名)/sizeof(数组名[0])计算数组长度
常性可以通过指针修改指向的变量,也可以修改保存的地址数组名是一个常量,不允许修改

4.3、数组名作为函数形参

数组名作为函数形参时,沦为一个普通的指针,如下:

#include <iostream>using namespace std;void display(int num[], int len)
{cout << "size = " << sizeof(num) << endl;;for (int index = 0; index < len; index ++) {cout << num[index];}
}int main()
{int num[5] = {1, 2, 3, 4, 5};display(num, 5);return 0;
}

输出结果:

size = 4
12345
Process returned 0 (0x0)   execution time : 0.016 s
Press any key to continue.

从输出结果可以看出来,sizeof()的结果是4,说明此时的数组名是一个普通指针。

5、指针作为函数参数

5.1、作为函数参数

通过传递指针,可以避免值传递带来的性能开销,并且可以直接修改原始数据。

void modifyValue(int* p) {*p = 20; // 修改p指向的值
}
int main() {int x = 10;modifyValue(&x); // 传递x的地址std::cout << x; // 输出20return 0;
}

5.2、常指针与指针常量

指针(*)与常量(const)谁在前先读谁,例如:

int main(){int a = 10;int b = 20;int const *p1 = &a;      // const在前,定义为常指针int * const p2 = &b;     // *在前,定义为指针常量return 0;
}
  • 常指针: 指针指向的是常量,不能通过指针改变指向的变量的值,但是指针保存的地址可以改变。
  • 指针常量: 指针是常量,不能改变指针保存的地址,但是可以改变指针指向的变量。

6、指针与动态内存分配

C++ 提供了 newdelete 运算符来进行动态内存分配和释放。与静态数组或变量不同,动态分配的内存可以在程序运行时根据需要分配和释放。例如:

int* ptr = new int;      // 动态分配一个整型变量的内存  
*ptr = 10;               // 通过指针访问并赋值  
std::cout << *ptr << std::endl; // 输出值  
delete ptr;              // 释放动态分配的内存

对于动态分配的数组,需要使用 delete[] 运算符来释放内存:

int* arr = new int[5];   // 动态分配一个包含 5 个整型元素的数组  
for (int i = 0; i < 5; ++i) {  arr[i] = i + 1;  
}  
for (int i = 0; i < 5; ++i) {  std::cout << arr[i] << " ";  
}  
std::cout << std::endl;  
delete[] arr;            // 释放动态分配的数组内存

7、注意事项

  • 空指针: 未初始化的指针可能指向任意内存地址,使用前应该将其初始化为 nullptr(C++11 引入的)或 NULL(传统方式,但不建议在现代 C++ 中使用)。
  • 野指针: 指针指向的内存已被释放,但指针本身仍然保留原来的地址。使用野指针会导致未定义行为。为了避免野指针,可以在释放内存后将指针设置为 nullptr
  • 指针类型转换: 不同类型的指针之间不能直接转换,除非进行显式类型转换(如使用 reinterpret_cast)。不当的指针类型转换可能导致不可预见的行为。

8、总结

指针是 C++ 编程中的一把双刃剑,它提供了对内存的直接操作能力,使得程序能够更高效地进行数据管理和访问。然而,不恰当的指针使用也可能导致严重的内存管理问题,如内存泄漏、野指针等。因此,在使用指针时,务必小心谨慎,遵循最佳实践,确保程序的稳定性和安全性。

http://www.yayakq.cn/news/418763/

相关文章:

  • 建设一个视频网站需要什么自己公司做公益网站怎么弄
  • 做外贸在什么网站上比较好网页游戏传奇盛世2
  • wordpress建站有广告吗平面设计最好的网站
  • 用脚手架如何搭建项目做网站创建一个自己的公司翻译
  • p2c网站方案商城微信网站怎么做
  • 做网站一般用什么配置的电脑wordpress主题淘宝客
  • 郑州商务网站建设wordpress 酷炫分页
  • 东莞广告公司东莞网站建设网站前端设计要做什么的
  • 做代理网站盐渎网
  • 创网站多少钱关于做公司app的软件或网站
  • 下饶网站建设怎么在建设银行网站购买国债
  • 留学网站建设多少钱网站开发服务商
  • ps做网站要求高吗现在网站一般做多大的
  • 灵犀 科技高端网站建设网站开发培训费多少
  • 能直接看的网站有哪些纯静态网站怎样
  • 电脑公司网站模板五大常用办公软件
  • 网站建设中html中关于图片显示的标签有哪些网站建设 专用术语
  • 网站开发私单哪里接自己做网站需要啥
  • 多语言网站多域名推广注册一个公司一年费用
  • 网站建设出售网页内容编辑
  • 图片制作成视频兰州模板网站seo价格
  • 烟台网站推广做微网站平台
  • 外贸建站费用wordpress文章分享到微信
  • 网站模板版权wordpress网页psd下载
  • 科技服务公司网站模版电脑版网页游戏
  • 免费网站建设无广告可以登陆的wordpress
  • 鞍山做网站公司广告设计公司的岗位有哪些
  • 链接点开网页表白的网站怎么做的苏州企业网站建设专家
  • html5的篮球网站开发用织梦系统做网站产权
  • 郑州网站制作公司百度付费推广的费用