c语言关于二级指针的问题,c++二级指针

本文目录一览:

关于C语言中的二级指针

二级指针就是指针的指针,也就是指向一块内存的地址的地址。例子如下

int i = 23;

int *pi = i;

int **ppi = π

cout i ‘ ‘ *pi ‘ ‘ **ppi endl;

数组就是存放多个变量的一块内存。该内存块的大小取决于该数组中变量的类型和个数,

C语言中的结构体二级指针问题

// PTREE 可以理解为是 struct TreeNode * 的别名,

// PTREE 类型的变量,即是指向 struct TreeNode 结构体变量的指针,

// 那么,PTREE * 类型的变量,就是指向 struct TreeNode 结构体变量指针的指针,

// 要理解为什么参数中传递的是指向 PTREE 类型的指针,首先要了解 C 语言参数传递的机制

// C 语言中,形参只是实参值的一份拷贝,它们仅仅是值相等,除此外再无其他关联,

// 重要的是,它们的地址不同,也就是说,改变了形参,实参并不受其影响。

// 而为了影响到实参,就需要知道实参的地址,通过其地址来修改实参。

// 通过把实参的地址传给形参,就可以修改与其相关联的实参的内容。

// C 语言的传参是基于传值的,理解了这个,由这类问题造成的困惑都会迎刃而解啦。

// 遇到指针问题,可以通过画图来帮助分析问题

// 要了解更多关于 C 语言传参机制的更多内容,可以再百度一下。

// 希望可以帮到你

c语言二级指针问题

7——k的值

5——s=t,s是t的地址,即s指向的内容是t(一个指向整型变量的指针);

*s=m,s指向的内容是m的地址,又因为s指向的内容是t,所以t的值改变成为m的地址,即t 指向的内容为m(一个整型变量),因此*t(t指向的内容)的值为5

5——**s=*(*s)=*t

3——i的值

3——int *p=i 等价于 int *p;(定义一个整形指针p)p=i;(p的值为i的地址),所以*p的值为3

3——int **r(定义一个指针r,r指向的内容是一个整形指针),r=p(r的值为p的地址,即r指向的 内容是一个整形指针p,其中p的值是i的地址)**r=*(*r)=*p

说的不太清楚请见谅,我指针也是属于一知半解,不过因为指针直接访问内存,所以请一定理解好它,否则以后编写C语言的程序很容易造成编译器检查不出的错误导致大范围的人工查错。

c语言关于二级指针

实参看情况比如

1 .char array[10][10];

则可以将array 传入。

2 当然也可以 char **array;然后自己申请内存。

接着将array传入。

3 或者char *array;

将array传入。

当然要看你是什么用法。

从你的函数来看你估计是要传一个二维数组首地址,也就是第一个。

c语言 二级指针

第一条改成

int

a[10][20],*p=a[0];

二维数组本来就是以为数组,二级指针是指针的指针,不同概念

char

*a[]={“a”,”b”};

char

**p=a;

这里定义了一个指针数组,里面保存了两个地址,一个是字符串a的首地址,一个是字符串b的首地址,然后数组的首地址a,这样用一个二级指针才能访问,这就是所谓的指针的指针

int

a[2][2]={1,2,3,4};

int

(*p)[2]=a;

(*p)[2]的意思是,p是一个指针变量,只想一个有两个元素的一位数组,这不刚刚就是二维数组的首地址吗?所以这个(*p)[2]是可以指向二维数组首地址

*p[2]的意思是,定义一个数组,里面有两个指针元素,这和”[]”,”*”运算符优先级有关的

关于c语言二级指针的问题

#include stdio.h

int main(int argc, char *argv[])

{

    char *strings[]={“123″,”456″,”789”};

    char **p;

    p = strings;

    

    printf(“[%c] [%s]\n”, **p, *p);

    

    return 0;

}

打印信息是[1] [123]

很正常嘛,完全正确啊,没啥异常。

我知道了,你可能有误解,**p不是指向string[0],而是指向string[0][0], *p才是指向string[0]

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/195279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2024-12-02 20:34
下一篇 2024-12-02 20:34

相关推荐

  • Python官网中文版:解决你的编程问题

    Python是一种高级编程语言,它可以用于Web开发、科学计算、人工智能等领域。Python官网中文版提供了全面的资源和教程,可以帮助你入门学习和进一步提高编程技能。 一、Pyth…

    编程 2025-04-29
  • 如何解决WPS保存提示会导致宏不可用的问题

    如果您使用过WPS,可能会碰到在保存的时候提示“文件中含有宏,保存将导致宏不可用”的问题。这个问题是因为WPS在默认情况下不允许保存带有宏的文件,为了解决这个问题,本篇文章将从多个…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • 指针Python:为什么Python中不需要使用指针?

    在Python中,指针的使用不像其他语言一样那么常见。这是因为Python有自己的内存管理方式,所以在大多数情况下,不需要显式地使用指针。那么,为什么Python中不需要使用指针呢…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • Java Thread.start() 执行几次的相关问题

    Java多线程编程作为Java开发中的重要内容,自然会有很多相关问题。在本篇文章中,我们将以Java Thread.start() 执行几次为中心,为您介绍这方面的问题及其解决方案…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python爬虫乱码问题

    在网络爬虫中,经常会遇到中文乱码问题。虽然Python自带了编码转换功能,但有时候会出现一些比较奇怪的情况。本文章将从多个方面对Python爬虫乱码问题进行详细的阐述,并给出对应的…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29

发表回复

登录后才能评论