首页 > 其他分享 >10.二级指针,指针的动态存储,常量与指针的结合、指针与数组的结合及指针函数

10.二级指针,指针的动态存储,常量与指针的结合、指针与数组的结合及指针函数

时间:2023-05-16 21:47:15浏览次数:42  
标签:10 常量 int 数据类型 语法 结合 数组 指针

  • 二级指针的语法
  • 指针的动态存储
  • 常量指针和指针常量
  • 指针数组和数组指针
  • 指针和函数的结合

二级指针的语法

语法:数据类型 ** 变量名 

   数据类型 * 变量名[常量]

    int a = 10;
    int* p=&a;
    int** dp=&p;
    cout << p << " " << *dp << " " << **dp;

输出结果:

指针的动态存储

指针变量名 =new 类型名(常量)

指针分配动态地址后,要释放内存地址,否则会造成地址缺失;

int* p;
p = new int(6);  // 给p分配动态内存
delete[]p;  // 释放内存地址
p=NULL // 防止"野指针"产生

 

常量指针和指针常量

常量指针

指向常量的指针

语法特性:

    const int* g;   // 常量指针
    int v = 7;  
    g = &v;
    //*g = 4;  // 此串代码无法执行

无法通过指针来修改值

指针常量

语法特性:

无法通过地址进行赋值

    int v = 7;
    int* const g=&v;  // 指针常量
    //g = &v;  // 此串代码无法执行

 

指针与数组得结合

指针数组

语法:数据类型 * 数组名[整数常量]

指针数组是一个数组,数组元素是指针

    int a[2][2] = { 1,2,3,4 };
    int* q[2]; // 指针数组
    // q = a;  // 无法赋值
    q[0] = a[0];
    q[1] = a[1];
    for (int i = 0; i < 2; i++)
    {for (int j = 0; j < 2; j++)
        {
            cout << q[i][j] <<" ";
        }}

输出结果为:1 2 3 4

数组指针

语法:数据类型 (* 数组名)[整数常量]

指向数组地址的指针

    int a[2][2] = { 1,2,3,4 };
    int(* q)[2]; // 指针数组
    q = a;
    //q[0] = a[0]; // 无法赋值
    //q[1] = a[1]; // 无法赋值
    for (int i = 0; i < 2; i++)
    {for (int j = 0; j < 2; j++)
        {
            cout << q[i][j] <<" ";
        }}

输出结果为:1 2 3 4

 

指针和函数的结合

指针函数

语法: 数据类型*函数名(参数名)

返回指针的函数

int* add(int a, int b)
{
    int c;
    c = a + b;
    return&c;
}
int main()
{
    cout << *add(2, 3);
    return 0;
}

输出为5

函数指针

语法:数据类型*(函数名)(参数名)

指向函数的指针

int *(*Func)(int c,int b)

这个为指向指针函数的函数指针

 

返回目录

标签:10,常量,int,数据类型,语法,结合,数组,指针
From: https://www.cnblogs.com/20wod/p/17367938.html

相关文章

  • SSM整合报错:errorCode 1045, state 28000 java.sql.SQLException: Access denied for
    SSM整合报错:errorCode1045,state28000java.sql.SQLException:Accessdeniedforuser简述SSM整合项目配置好环境后,当要对数据库进行操作,加载jdbc.properties数据库配置文件时,出现下面的报错createconnectionSQLException,url:jdbc:mysql://localhost:3306/furn_ssm,......
  • 定义一个Dog类,包括体重和年龄两个数据成员及其成员函数,声明一个实例dog1,体重5,年龄10,使
    #include<bits/stdc++.h>usingnamespacestd;classDog{      private:             intweight,age;      public:             Dog(intw,inta):weight(w),age(a)             {             ......
  • STM32_10(I2C)
    I2C通信I2C(InterICBus)是由Philips公司开发的一种通用数据总线两根通信线:SCL(SerialClock)、SDA(SerialData)同步,半双工带数据应答支持总线挂载多设备(一主多从、多主多从)使用同步时序可以极大降低单片机对硬件电路的依赖 硬件电路所有I2C设备的SCL连在一起,SDA连在一起......
  • 记录--10个超级实用的Set、Map使用技巧
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助Set是一种类似于数组的数据结构,但是它的值是唯一的,即Set中的每个值只会出现一次。Set对象的实例可以用于存储任何类型的唯一值,从而使它们非常适用于去重。Map是一种键值对集合,其中每个键都是唯一的,可以是任何类型,......
  • AI女友同时和1000人谈恋爱,狂赚500万
    AI女友,预计暴赚4亿要说当下什么最火,AI首当其冲无可置疑。00后网络红人红卡琳·玛乔丽(CarynMarjorie)最近与ForeverVoices公司合作,通过视频训练等方式打造出个人形象、声音和性格的AI虚拟女友,就像在和玛乔丽本人交谈一样。简单来说,就是出售AI版本的自己,和男友们谈恋爱,每分钟收费......
  • GYM100722C - Ticket to Ride
    首先考虑\(dp_{i,msk}\)表示当前连通了\(msk\)中所有关键点,并且当前连通的非关键点包含\(i\)的最小代价。然后考虑如何转移。我们先用\(Floyd\)预处理所有点对之间的最短路\(dist_{i,j}\)。同时,每次选取的两个用于合并的关键点集合一定没有交集,所以我们可以直接枚举子集......
  • GYM102392 简要题解
    自己下午闲着没事单挑了一下,两小时左右一度rk1,但后继无力了。。。。A.MaxorMin肯定沿着出现过的数操作;然后发现如果a[i]=k,a[j]>k,a[k]<k就会增加一次操作所以维护一下差分序列即可。B.LevelUp两维DP,这个疑似edu出过。要注意的是:需要关于x排个序,不然会漏一些转移。D.......
  • LG P5410 【模板】扩展 KMP(Z 函数)
    \(\text{template}\)注意z[1]=n,从下标\(2\)开始求z!!\(\text{Code}\)#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=2e7+5;intz[N],p[N],n,m;chara[N],b[N];voidgetZ(char*s,intn,int*z){for(......
  • (双指针)剑指 Offer 22. 链表中倒数第k个节点
    题目描述:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。    classSolution......
  • C#导入CAD DXF格式的图纸文件源码 结合了. net dxf库文件 C#写的CAD DXF格式文件导入
    C#导入CADDXF格式的图纸文件源码结合了.netdxf库文件C#写的CADDXF格式文件导入,自动解析图形文件坐标并显示,看懂源代码就可根据实际要求应用到项目,非常具有学习价值ID:5275638923543619......