首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当我在main函数中调用C-2d数组打印函数时,它不起作用

当你在main函数中调用C-2d数组打印函数时,它不起作用的可能原因有以下几个方面:

  1. 函数调用错误:首先要检查你调用C-2d数组打印函数的方式是否正确。确认函数名称、参数的类型和数量与函数定义一致。另外,还要确保你已经在main函数中正确地引用了C-2d数组打印函数所在的头文件。
  2. 函数定义错误:如果函数调用没有问题,但函数仍然不起作用,可能是函数定义出现了错误。请检查C-2d数组打印函数的定义,确保函数的逻辑正确且没有语法错误。
  3. 数组传递错误:C语言中,数组的传递是通过指针实现的。如果你的C-2d数组打印函数接受的参数类型是指针,而你在调用函数时传递的是数组本身,就会导致函数无法正确操作数组。需要确保函数定义中的参数类型与函数调用中的参数类型匹配。
  4. 数组数据错误:可能是数组数据本身出现了问题导致函数不起作用。请检查数组的数据初始化、赋值和传递过程,确保数组中的数据是正确的,并且被正确地传递给了C-2d数组打印函数。

总结起来,当你在main函数中调用C-2d数组打印函数时,它不起作用可能是因为函数调用错误、函数定义错误、数组传递错误或者数组数据错误。需要仔细检查函数调用和定义的正确性,并确保数组数据的正确传递和处理。如果问题仍然存在,可能需要进一步分析调试代码以确定具体的问题所在。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【专业技术】CC++程序打印当前函数调用

基于这个事实,我想到了这样一个办法,程序开始,通过系统提供的atexit(),向系统注册一个回调函数程序调用exit()退出的时候,这个回调函数就会被调用,然后我们回调函数打印出当前的函数调用栈...在上面,我提到了“回调函数打印出当前的函数调用栈”,相信细心的朋友应该注意到这个了,本文的主要内容就是详细介绍,如何在程序打印当前的函数调用栈。.../test1()[0x400529] 从上面的运行结果,我们的确看到了函数调用栈,但是都是16进制的地址,会有点小小的不爽。当然我们可以通过反汇编得到每个地址对应的函数,但这个还是有点麻烦了。...不过不知道大家有没有想过这样一个问题,同一个函数可以代码多个地方调用,如果我们只是知道函数,而不知道在哪里调用的,有时候还是不够方便,bingo,这个也是有办法的,可以通过address2line命令来完成...,而且可以得到每个函数的名字,以及被调用的位置,大功告成。

3K40

Linux+Windows: 程序崩溃 C++ 代码,如何获取函数调用栈信息

一、前言 二、Linux 平台 三、Windwos 平台 一、前言 程序执行过程 crash 是非常严重的问题,一般都应该在测试阶段排除掉这些问题,但是总会有漏网之鱼被带到 release 阶段。...因此,程序的日志系统需要侦测这种情况,代码崩溃的时候获取函数调用栈信息,为 debug 提供有效的信息。...这篇文章的理论知识很少,直接分享 2 段代码: Linux 和 Windows 这 2 个平台上,如何用 C++ 来捕获函数调用栈里的信息。 二、Linux 平台 1....std::endl; } } free(symbols); oss << std::endl; std::cout << oss.str(); // 打印函数调用栈信息...利用以上几个神器,基本上可以获取到程序崩溃函数调用栈信息,定位问题,有如神助! ----

5.7K20
  • C语言指针进阶(1)(超详细)

    就像我们上面说的,每次p+1跳过4个字节,来到下一个数组元素,然后打印。... C 语言中,断言被定义为宏的形式(assert(expression)),而不是函数,其原型定义文件。...也就是说,如果表达式 expression 的值为假(即为 0),那么它将首先向标准错误流 stderr 打印一条出错信息,然后再通过调用 abort 函数终止程序运行;否则,assert 无任何作用。...默认情况下,assert 宏只有 Debug 版本(内部调试版本)才能够起作用,而在 Release 版本(发行版本)中将被忽略。...交换后:a=%d b=%d\n", a,b); return 0; } 首先我们看一下上面的代码,看似是可以的,我们运行一下: 我们发现a与b的值并未改变,这是为什么呢, 那是因为我们调用swap函数

    24621

    【CC++】const函数详解

    形参带默认值的函数 给默认值的时候从右向左给 定义处可以给形参默认值,声明也可以给默认值 形参给默认值,不管定义处给,还是声明处给,形参默认值只能给一次 调用有默认值的函数效率会增大 inline...内联函数 inline内联函数: 在编译过程中就没有函数调用开销了,函数调用点直接·把函数的代码进行展开处理了。...debug版本上inline内联函数是不会起作用的,还是有mov,push,call指令。...release版本下才可以实现 此处可以Linux下验证: g++ -c main.cpp -O2 objdump -t main.o 这里面就找不到sum产生的符号了。...C const修饰的量可以不用初始化,但是后边也就无法赋值了。其实它不叫常量,叫做常变量。

    10010

    JavaScript this 的使用技巧总结

    可以看到,这时候 this 执行了全局,当我们把 test = obj.foo ,test 直接指向了一个函数的引用,这时候,其实和 obj 这个对象没有关系了,所以,它是被当作一个普通函数来直接调用,...执行这段代码我们会发现两次打印出来的 this 是不一样的: 第一次是 foo2 中直接打印 this,这里指向 obj 这个对象,我们毋庸置疑; 但是 setTimeout 执行的 this.foo...执行定义所在的对象,就是指向定义这个箭头函数作用域内的 this,也就是 obj.foo2 的 this,即 obj;所以执行箭头函数的时候,它的 this -> obj.foo2 的 this...它会立即执行函数,第一个参数是指定执行函数 this 的上下文,第二个参数是一个数组,是传给执行函数的参数(与 call 的区别); bind ?...可以看到,虽然指定 this 不起作用,但是传入参数还是起作用了; 为箭头函数指定 this 我们来定义一个全局下的箭头函数,因此这个箭头函数的 this 必然会指向全局对象,如果用 call 方法改变

    87130

    【C++高阶】掌握C++多态:探索代码的动态之美

    多态的原理 虚函数开始前先问大家一个 简单的 问题,下面这个类的大小是多少?类和对象,我们讲过类的大小判定和结构体差不多,那么x86,它的大小到底是不是4bytes?...,找到不同的虚函数调用, 这样就实现出了不同对象去完成同一行为时,展现出不同的形态 看出满足多态以后的函数调用,不是在编译确定的,是运行起来以后到对象的取找的。...普通的函数调用时编译确认好的 4....= 0; i++) { // 依次取虚表的虚函数指针打印调用。...而进行这么多步骤是为了 修正this指针 注意: inline函数可以是虚函数,如果是普通调用,则inline起作用,如果是多态调用,inline不起作用 静态成员不可以是虚函数,因为静态成员函数没有this

    31120

    C语言的灵魂——指针

    解释: main()是主调函数,Increment()是被调函数当我主调函数调用其他函数,这个参数叫做实参,这个被调函数的参数叫做形参,实参会被映射到形参,当这个函数调用的时候,主函数的实参...’a’会被映射到Increment函数的形参’a’里面,当我们进行这样的调用的时候,基本上就是把一个变量拷贝到另一个变量,这种形式的函数掉用也被称为,传值调用。...但是,将换个位置, c1 = c2;是非法的 c2存的就是字符数组c1首元素的地址(同上面的整型数组)。 c2 =c1; 解引用操作同上面的数组。 代码示例:打印数组的所有元素。...不同点: B返回一个指向一个一维数组的指针,而*B返回一个指向整型的指针,当我们只是打印地址的时候,一维数组B[0]和B[0]的首元素的起始地址是一样的,所以打印的地址是相同的,指针类型会在你尝试解引用时或者尝试做指针算术的时候起作用...当我们说函数指针存放函数地址的时候, 我们是在说函数指针存放了函数在内存的起始地址或者入口点。

    93910

    JS 函数的 arguments 类数组对象

    1. arguments 介绍 2. arguments 转为数组 3. 箭头函数没有 arguments 1. arguments 介绍 众所周知,js 是一门非常灵活的语言。...当我 js 调用一个函数,经常会给函数传递一些参数,js 把调用函数传入的全部实参存储到一个叫做 arguments 的类数组对象里面 arguments 是一个类数组对象,不是一个真正的数组...', 'css', 'js']) 通过打印结果可以发现,arguments 的原型是 Object,而数组的原型是 Array 那么关于 arguments 是什么 ?...它有 length 属性,并且可以通过下标获取元素,但是它不调用数组方法,就是因为它不是真正的数组,这一点可以通过查看它的原型验证 2. arguments 转为数组 arguments 是类数组对象...箭头函数没有 arguments arguments 只存在于普通函数,而在箭头函数是不存在的 下面代码抛出错误异常:Uncaught ReferenceError: arguments is not

    5.4K20

    【C++高阶】多态(概念&&虚函数&&抽象类)

    当我们谈论C++这门强大的编程语言,多态更是一个不可或缺的话题 需要声明的,本节课件的代码及解释都是vs2022下的x86程序,涉及的指针都是4bytes。..., 这样就实现出了不同对象去完成同一行为时,展现出不同的形态 因此我们可以看出满足多态以后的函数调用,不是在编译确定的,是运行起来以后到对象的取找的。...普通的函数调用时编译确认好的 3.4 动态绑定与静态绑定 1. 静态绑定又称为前期绑定(早绑定),程序编译期间确定了程序的行为,也称为静态多态, 比如:函数重载和模板 2....= 0; i++) { // 依次取虚表的虚函数指针打印调用。...4.3 虚函数调用注意事项: a、inline函数可以是虚函数,如果是普通调用,则inline起作用,如果是多态调用,inline不起作用 b、静态成员不可以是虚函数,因为静态成员函数没有this指针

    15010

    字符串的三种存储方式

    堆是由我们程序员自己管理的,当进程调用malloc等函数分配内存,新分配的内存就被动态分配到堆上,当利用free等函数释放内存,被释放的内存从堆中被剔除。    ...除此之外,函数调用时,其参数也会被压入发起调用的进程栈,并且待到调用结束后,函数的返回值也会被存放回栈,由于栈的先进后出特点,所以栈特别方便用来保存、恢复调用现场。...当我调用malloc,就会在堆上划分一块空间给我们使用,具体代码如下: //创建了一个动态数组str,通过使用 malloc 申请了 10个 char 类型大小的堆存储空间。...这个时候realloc函数起作用了。 //通过使用这行代码,之前具有10 个 char 型存储空间的动态数组,其容量扩大为可存储 20 个 char 型数据。...我们知道,单链表的 “单” 强调的仅仅是链表各个节点只能有一个指针,并没有限制数据域中存储数据的具体个数。因此设计链表节点的结构,可以令各节点存储多个数据。

    1.6K20

    弄明白JS的delete操作符

    这个操作符调用时被传入O - 要变更的对象, P - 要移除的属性的key. let obj = { d: 88 } console.log(obj.d); delete obj.d; console.log...当直接引用这个对象是, Foo构造函数定义的bar会被返回. f.bar // 90 当我们删除了这个属性: delete f.bar 他只会影响到Foo构造函数定义的bar, 而不会影响到原型链的...当我们再次应用这个属性, 原型链的bar就会被返回 console.log(f.bar); delete f.bar console.log(f.bar); 90 88 delete与JS内建静态属性...Array的JSObject并不是由数列自己定义的, 而是通过数字排序定义的 obj = [90, 88]; JSObject { 0 -> 90 1 -> 88 } 这也是为什么我们引用数组的方式...在数组, 这些数字就是它的属性. 我们上述的数组, 它有两个属性0和1.

    1.2K10

    Go 切片使用绕坑指南

    Go按值传递,为什么有时会更改切片?...所以函数调用之后,该数组的数字重新排列,函数外部的切片与内部的切片共享着相同的底层数组,所以外部的 s 表现出来的就是它也被排序了。...如前所述,当我调用 append,会创建一个新的切片。...于是 系统分配了一个新数组,让切片指向该数组当我们最终 reverse函数内开始反转切片中的元素它不再影响我们的初始数组,而是完全不同的数组上运行。...如果在将切片填充到容量长度后,s上再调用 append(),我们将不会再在 main()函数中看到这些更改,因为我们的reverse 函数的代码将一个新切片指向到了一个完全不同的数组

    1.2K20

    前端day11-JS学习笔记(构造函数、对象的API、作用域、arguments关键字)

    1-自定义构造函数(new关键字工作原理) new关键字工作原理.gif 当我们想要创建多个对象很容易造成代码冗余,那么我们可以使用函数或者自定义构造函数去创建对象。...全局作用域 局部作用域 1.全局作用域:变量在任何地方起作用 全局变量:函数外面声明 2.局部作用域:变量只能在函数内部起作用 局部变量:函数内部声明 3.2-作用域链 1.作用域链是怎么来的 默认情况下...,我们的js代码处于全局作用域,当我们声明一个函数,此时函数体会开辟一个局部作用域, 如果我们在这个函数又声明一个函数,那么又会开辟一个新的局部作用域,以此类推,就会形成一个作用域链 2.变量作用域链上的访问规则...),变量的赋值与函数调用还是原地 b.函数的声明也会提前 3.预解析的意义(好处) 让函数可以在任意地方调用 数据类型总结 1.数据类型种类 五种基本数据类型:string,number,boolean...3.arguments特点 1.只能在函数体中使用,函数外使用会报错 2.是一个特殊的数组(伪数组) 有数组的三要素,但是没有数组其他的方法 3.arguemngs数组的元素与形参一一对应 4.arguements

    83710

    教你如何在 React 逃离闭包陷阱 ...

    它不可能是 undefined,如果我 onClick 之外添加 console.log,它就会正确打印。...JavaScript、作用域和闭包 让我们从函数和变量开始,当我 JavaScript 声明一个普通函数或者尖头函数会发生什么呢?...每个闭包在创建都是冻结的,当我们第一次调用 something 函数,我们创建了一个值变量包含 "first" 的闭包。然后,我们把它保存在 something 函数之外的一个对象。...当我们下一次调用 something 函数,我们将返回之前创建的闭包,而不是创建一个带有新闭包的新函数。这个闭包会与 "first" 变量永远冻结在一起。...当我们试图访问存储 Ref 函数内部的 state 或 props ,我们只能得到它们的初始值: const Component = ({ someProp }) => { const [state

    61340

    Linux上写一个进度条小程序

    反而像是 sleep 函数起作用,然后 printf 函数再从光标处开始打印打印完之后,shell 提示符紧跟着字符串后显示。...分析: printf 打印的字符串没有显示到终端,光标一直停留在该打印字符串的一行 sleep 函数休眠三秒后,shell 提示符直接打印了屏幕上。...这里由于是直接往显示器上打印,所以采用的刷新方式为行缓冲。 所以执行碰到 ‘\n’ ,就会把缓冲区的 (换行符之前) 的内容全部刷新出来。...proc.h :函数声明 proc.c :进度条逻辑 main.c :函数调用 makefile 准备 : 由于采用多文件,所以依赖关系可以写成依赖文件列表的样式: 分块逻辑 : 1.进度条主体 预留进度条大小为...进度条是一行的,所以需要用到 '\r' ,每次都需要使用 fllush 主动刷新缓冲区。 每次刷新出数据之后,将 = 填充到数组,并且显示 > 。最后一次显示,控制 > 不要显示。

    1.6K10

    程序员C语言快速上手——高级篇(十)

    当我调用一个函数,被称为函数入栈,指的就是为这个函数栈区中分配内存。 堆(heap)堆内存由程序员手动分配、手动释放,如果不释放,只有当程序运行结束后,操作系统才会去回收这片内存。...区别:所有函数都能访问全局变量,静态变量作用域则只局限于定义它的函数内部 自动内存 函数内声明,函数调用时创建(分配在栈),作用域局限于该函数内部,函数执行完则释放。...当我处理大文件、图片、视频等数据,2M显然是不够用的,我们可能需要更大块的内存空间。通常的,堆内存空间大小是没有限制的,只要你电脑的内存条足够大,你就可以向操作系统申请足够大的堆内存空间使用。...通常当函数调用结束后就会退栈,那么函数的局部变量也就不复存在了。当我们需要一个变量或数组有更长的生命周期,堆内存是更好的选择。 全局变量虽然有与程序相同的生命周期,但无法动态的确定大小。...失败它不会对原来的堆空间造成影响 关于free的使用总结当使用free函数释放内存后,指向原堆空间的指针并不会被清理或重置,这意味着指向原空间的指针仍保存着一个不合法的地址,如果不小心再次使用了这个指针

    1.4K30

    笨办法学 Java(四)

    所以当我把0放入 max ,我的意思是“代码的这一点上,就我所知,最高分的学生 槽0。”这可能不是真的,但由于我们还没有查看数据库的任何值,这是一个很好的起点。...首先,我在记录偷偷加了一个函数。(实际上,因为这个函数一个类它不是一个函数,而是一个“方法”。) 这个方法被命名为 toString。它没有参数,并返回一个String。...进入main(),第 20 行声明了房间数组并从中初始化。 loadRoomsFromFile()函数,稍后我会解释。 第 22 行有一个注释掉的showAllRooms()函数调用,我用于调试。...因为当前房间没有改变,所以主游戏循环中再次循环将只是再次打印出他们已经的房间的描述。 这就是主游戏循环的结束,也是main()的结束。剩下的就是从冒险游戏文件实际填充房间数组。...因此,第 107 行调用nextLine()方法,但不必在任何地方存储它的返回值,因为它不会读取任何值值得保存。 第 109 行从文件读取房间名称。我们只调试使用这个。

    10010

    第1讲:C语言常见概念

    VS2022上运行代码的快捷键: Ctrl+f5 6. main函数 每个 C 语言程序不管有多少行代码,都是从 main 函数开始执行的, main 函数是程序的入口,...只要把想要打印的一串字符放在双引号并传递给printf函数就可以打印。...⼀个系列的库函数⼀般会声明同⼀个头文件,所以库函数的使用,要包含对应的头文件。...//字符串可以存放到字符数组 蓝色的是arr1的内存布局空间,黄色的是arr2的布局空间,它们前后都有数据,对于arr1来说,当打印遇到\0的时候就停止了,很有分寸感,但对于arr2打印来说,只知道数组里面放着...printf ( "hehe\n" ); // 函数调用语句(调用函数,是函数调用语句) int ret = Add( 2 , 3 ); // 函数调用语句(自己的函数调用,叫函数调用语句

    11210
    领券