day03.函数与指针(含new与delete关键字)

一.指针

#include<iostream>
using namespace std;
#define pi 3.14159//定义常量int main(){cout<<pi<<endl;int a=10;int *p=NULL;//定义指针p=&a;cout<<"a的地址为:"<<p<<endl;cout<<"a="<<*p<<endl;return 0;
}

1.指针的作用

通过指针可以间接访问内存

  • 内存编号是从0开始记录的,一般用十六进制数字表示。
  • 可以利用指针变量保存地址。

2.指针的定义与使用

数据类型 * 变量名

3.空指针与野指针

空指针: 指针变量指向内存中编号为0的空间

用途: 初始化指针变量

注意: 空指针指向的内存是不可以访问的


int *p = NULL;//初始化指针,NULL为0
//空指针不可访问
//0~255之间的内存编号是系统占用的,不允许用户访问
cout << *p << endl;// 引发了异常: 读取访问权限冲突。p 是 nullptr。

野指针: 指针变量指向非法的内存空间

4.关键字new与delete【动态内存管理】⭐️

new与delete管理对象

在C++提供关键字new来创建对象,delete释放对象,但释放数组需要加上[]。

(类似于:在C语言是用库函数malloc来申请内存,free来释放内存)。

                                                       动态管理内存的入口
malloc,     freenew,   delete
C/C++标准库的函数C++操作符
只是动态分配内存空间/释放空间除了分配空间还会调用构造函数和析构函数进行初始化与清理(清理成员)
需要手动计算类型大小且返回值w为void可自动计算类型的大小,返回对应类型的指针。
管理内存失败会返回0方式管理内存失败会抛出异常
#include<iostream>
using namespace std;
int main(){int *p1=new int;*p1=99;cout<<"sizeof *p1="<<sizeof(*p1)<<endl;cout<<"*p1="<<*p1<<endl;cout<<"p1="<<p1<<endl;delete p1;//释放p1指向的内存return 0;
}

(1)

#include<iostream>
using namespace std;
int mian(){int *p1=new int;int *p2=new int(8);//初始化int *p3=new int[5];//动态分配数组delete p1;delete p2;delete[] p3;return 0;
}

二.函数

#include<iostream>
using namespace std;
void max(int p,int t);//函数声明
int main(){int a=9,b=10;cout<<a<<b<<endl;max(a,b);//函数调用,实参列表return 0;
}
void max(int p,int t){//函数定义,形参列表int u=p>t?p:t;cout<<u<<endl;
}

形参与实参的关系:
两者是在调用的时候进行结合的,通常实参会取值传递给形参,形参之后进行函数过程运算,然后可能将某些值经过参数或函数符号返回给调用者。 

1.文件包含

文件包含是指将一些头文件或其他源文件包含到本文件中,一个文件被包含后该文件的所有内容就被包含进来了。
#include<文件名>
#include"文件名"

尖括号< >和双引号" "的区别:

  1. 用尖括号时,称为标准模式,系统直接到存放c/c++库函数的文件中查找要包含的文件。
  2. 用双引号的时候,系统优先在当前目录中查找要包含的头文件,若找不到,再按标准模式查找。

一般来说,使用库函数的时候用< >使用用户自定义的头文件时用" ";

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/448549.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大学与社会的区别是什么?

大家好&#xff0c;我是秋意零。 在回答这个问题前&#xff0c;你可能也会有两个疑问。 ● 为什么在社会中不能像在学校一样自律&#xff1f; ● 如何调整适应社会这个新环境呢&#xff1f; 一、为什么在社会中不能像在学校一样自律&#xff1f; 为什么在社会中不能像在学…

聊聊Git合并和变基

一、 Git Merge 合并策略 1.1 Fast-Forward Merge&#xff08;快进式合并&#xff09; //在分支1下操作&#xff0c;会将分支1合并到分支2中 git merge <分支2>最简单的合并算法&#xff0c;它是在一条不分叉的两个分支之间进行合并。快进式合并是默认的合并行为&#…

10 排序的概念

目录 1.排序的概念和运用 2.排序的分类 1. 排序的概念及运用 1.1 排序的概念 排序: 所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在…

python3基础学习一

打印print()函数 R 主要的原因是为防止转义&#xff0c;保证r后面的内容全文输出f “主要作用就是格式化字符串&#xff0c;加上f以后&#xff0c;{“变量/表达式”},花括号里的变量和表达式就可以使用了” def ptSubstr():msg "hello,world!"print(msg[0:-1]);prin…

线性代数:矩阵的秩

目录 一、矩阵的子式 二、矩阵的秩 三、重要性质定理推论 一、矩阵的子式 二、矩阵的秩 三、重要性质定理推论

水闸安全监测系统的主要监测项和优势

一、行业背景 水闸工程作为防洪保安、调控水资源的重要设施,其安全运行至关重要。为规范水闸安全监测、掌握水闸运行性态、评价施工质量、反馈设计指标、降低失事风险等&#xff0c;有必要在水闸主要结构病害特征分析的基础上&#xff0c;确定了水闸监测项目主要包括闸墩及翼墙…

代码随想录算法训练营第二十四天|● 理论基础 ● 77. 组合

仅做学习笔记&#xff0c;详细请访问代码随想录 ● 理论基础 ● 77. 组合 ● 理论基础 回溯法解决的问题 回溯法&#xff0c;一般可以解决如下几种问题&#xff1a; 组合问题&#xff1a;N个数里面按一定规则找出k个数的集合 切割问题&#xff1a;一个字符串按一定规则有几…

计算机二级C语言的注意事项及相应真题-2-程序修改

目录 11.找出n的所有因子&#xff0c;统计因子的个数&#xff0c;并判断n 是否是”完数”12.计算s所指字符串中含有t所指字符串的数目13.将一个由八进制数字组成的字符串转换为与其面值相等的十进制整数14.根据整型形参m的值&#xff0c;计算如下公式的值15.从低位开始依次取长…

Java 基于 SpringBoot+Vue 的考研论坛管理系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

画质和场景双需求下,海信电视U8KL的变与不变

又到一年春节&#xff0c;最近几年大家过年的方式越来越丰富&#xff0c;但是跟家人在一起看春晚依然是主流&#xff0c;电视也是过年不可或缺的家庭成员。 当然&#xff0c;随着大家对生活品质的要求更高&#xff0c;对电视的要求也变得更高了。比如&#xff0c;现在春晚直播…

政安晨的AI笔记——示例演绎OpenAI的ChatGPT与DALL·E提示词总原则(并融合创作一副敦煌飞天仙女图)

ChatGPT是由OpenAI开发的一种基于大规模预训练的语言生成模型。它建立在GPT&#xff08;Generative Pre-trained Transformer&#xff09;模型的基础上&#xff0c;通过大量的无监督学习和生成式任务训练来学习语言的概念和模式。 ChatGPT的原理是基于Transformer模型。Transfo…

算法基础,一维,二维前缀和差分详解

目录 1.前缀和 1.一维前缀和 例题&#xff1a;【模板】前缀和 2.二维前缀和 例题&#xff1a;【模板】二维前缀和 2.差分 1.一维差分 1.性质&#xff1a;d[i]的前缀和等于a[i] 2.性质&#xff1a;后缀区间修改 例题&#xff1a;【模板】差分 2.二维差分 例题&#x…