专栏首页Effective Objective C【字节跳动面试题】C++指针作为参数传递
原创

【字节跳动面试题】C++指针作为参数传递

指针作为函数参数,传递到底是什么?

// 输入代码内容
int main( )
{
    Verfication ver;
    int num[] = {1, 2, 3};
    cout<<"&num:"<<&num<<endl;
    cout<<"num="<<num<<endl;
    ver.verifyPointerArgumentOfFunction(num);
    cout<< sizeof(num);
	return 0;
}
// 输入代码内容
void verifyPointerArgumentOfFunction(int *p){
        cout<<"&p:"<<&p<<endl;
        cout<<"*p="<<p<<endl;
}

以上代码输出如下:

image.png

此处内存如下:

image.png

调用函数verifyPointerArgumentOfFunction时,num将其数组首元素的地址传入,赋值给p,调用了p的拷贝构造函数,因此p的值和num其数组首元素的地址相同。而p作为verifyPointerArgumentOfFunction函数栈中的局部变量,其地址为0x7ffee72bfae0。

参考文献

[1] C语言中数组与指针的关系

[2] C++数组名与指针

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一篇文章完全讲解C语言指针

    指针对于C来说太重要。然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识。所以本文尽可能的通过一篇文章完全讲...

    AI 电堂
  • 梦凡&粉丝---问题交流第一期

    因为「函数调用传递实参」,「函数体内通过形参拷贝实参数据」,并且形参只在函数体内存在,出了函数就被释放掉了

    DeROy
  • C语言指针详解

    这不是我第一次写关于C指针的文章了,只是因为指针对于C来说太重要,而且随着自己编程经历越多,对指针的理解越多,因此有了本文。然而,想要全面理解指针,除了要对C语...

    用户7886150
  • C/C++ 学习笔记三(函数)

    函数在编程语言中可谓“头等公民”,理解函数的实现原理,函数的一些方法论对于编程非常有好处。 我将从函数的实现原理以及编写函数的一些建议两个的角度来重新认识一下C...

    Celebi
  • CTF逆向指南

    在CTF比赛中, CTF逆向题目除了需要分析程序工作原理, 还要根据分析结果进一步求出FLAG。逆向在解题赛制中单独占一类题型, 同时也是PWN题的前置技能。在...

    小道安全
  • 【连载】两百行Rust代码解析绿色线程原理(二)一个能跑通的例子

    首先,让我们在名为 green_threads 的文件夹中启动一个新项目。命令行执行:

    MikeLoveRust
  • 安卓逆向:这是一篇逆向基础函数在ARM32中的刨根问底。

    通过向程序计数器 PC写入跳转地址值,可以实现在 4GB 的地址空间中的任意跳转,在跳转之前结合使用MOV LR,PC

    小道安全
  • 汇编语言之ARM32汇编

    以上两种编译环境,使用的指令集都是一致的, 只是语法格式有不同,也就是宏指令,伪指令,伪操作不一样

    乱码三千
  • c++基础之函数

    距离上次更新又过了一周,又该更新新的读书笔记了。本次更新的主要是c++中函数部分的内容

    Masimaro
  • 开发成长之路(3)-- C语言从入门到开发(讲明白指针和引用,链表很难吗?)

    指针是C语言的基本概念,C语言中指针无处不在。实际上,每种数据类型,都有相应的指向T的指针类型。 指针类型变量存放的值,实际上就是内存地址。指针类型有两个最基...

    看、未来
  • C语言嵌入式系统编程修炼之内存操作

    这是我13年前创作和发表在互联网上的文章,这么多年过去了,这篇文章仍然在到处传播。现在贴回Linuxer公众号。 全文目录: C语言嵌入式系统编程修炼之道——背...

    企鹅号小编
  • ROP-Ret2csu详解

    当在x64环境下函数的参数传递凑不齐类似“pop rdi;ret”/“pop rsi;ret”/“pop rdx;ret”等3个传参的gadgets时,就可以考...

    偏有宸机
  • C函数原理

    C语言作为面向过程的语言,函数是其中最重要的部分,同时函数也是C种的一个难点,这篇文章希望通过汇编的方式说明函数的实现原理。

    Masimaro
  • 闭关多日,整理一份C++中那些重要又容易忽视的细节

    内联函数,都知道是什么嘛,就不多解释了,用这个开头,因为它够简单,又有足够的争议性。 有的人喜欢用内联函数,有的人不喜欢用,我嘛,无所谓,什么时候想起来就什么...

    看、未来
  • C语言最难啃的三块硬骨头

    指针之所以难理解,因为指针本身就是一个变量,是一个非常特殊的变量,专门存放地址的变量,这个地址需要给申请空间才能装东西,而且因为是个变量可以中间赋值,这么一倒腾...

    诸葛青云
  • Linux后台开发必看!

    一 自我介绍二 面试情况三 相关知识点汇总1 c/c++相关2 计算机网络3 数据结构相关4 数据库相关5 操作系统6 Linux基础知识及应用编程(后台必备!...

    公众号guangcity
  • C语言 | C++ 堆栈工作机制

    我们经常会讨论这样的问题:什么时候数据存储在堆栈 (Stack) 中,什么时候数据存储在堆 (Heap) 中。我们知道,局部变量是存储在堆栈中的;debug 时...

    小林C语言
  • iOS面试--虎牙最新iOS开发面试题

    关于面试题,可能没那么多时间来总结答案,有什么需要讨论的地方欢迎大家指教。主要记录一下准备过程,和面试的一些总结,希望能帮助到正在面试或者将要面试的同学吧。

    搬砖猿er
  • 一个printf(结构体指针)引发的血案

    在上周六,我在公众号里发了一篇文章:C语言指针-从底层原理到花式技巧,用图文和代码帮你讲解透彻,以直白的语言、一目了然的图片来解释指针的底层逻辑,有一位小伙伴对...

    GorgonMeducer 傻孩子

扫码关注云+社区

领取腾讯云代金券