数组的元素类型不完整。这是什么意思? [复制]

2023-11-29

我想创建一个数组来存储任何整数 n 的乘法值。之后,我想将该数组传递给另一个函数并打印出该数组。但是,我收到以下错误:

My code:

这是我的 .c 文件:

 #include "multiplication.h"
#include <stdio.h> 
int main(){
int num;
int arr=multiplication(4);
printArray(arr);



}

int mulitpication(int num){
 /* initialize array and build*/
    int arr[num][num];
    for(int i=0; i<num;i++){
        printf("row number: %d ",i);
         for(int j=0;j<num;j++){
             printf("column number: %d", j);
            arr[i][j]= (i+1)*(j+1);
         }
    }
    return arr;
    }

    void printArray(int arr[][]){
    
    int i;
    for(i=0;i<sizeof(arr);i++){
        for(int j=0;j<sizeof(arr);j++){
            printf("%d ",arr[i][j]);
        }
        
    }

这是我的头文件:

void multiplication(int num);
void print(int arr[][]);

错误:

 multiplication.h:4:19: error: array has incomplete element type 'int []'
void print(int arr[][]);
                  ^

首先,您不会将源文件相互包含在一起,而是将它们编译并链接在一起以形成二进制文件。

也就是说,实际问题出在您没有显示的代码中(multiplication.h文件),但是从错误消息中我们可以看到

 void print(int arr[][]);

不是有效的语法。您只能将外部(最)索引保留为空,所有其他索引必须具有正确的值。就像是

void print(int arr[ ][10]);
                      ^^---------- inner index
                 ^^^------------- outer index

或者,对于更多维度

    void print(int arr[ ][5][10][15]);

这背后的类比是,对于函数声明符来说,

“将参数声明为“类型数组”应调整为“指向类型的限定指针”,......”

因此,要进行这种调整,type编译器应该在编译时知道。

如果有类似的声明

void print(int arr[][10]);

类型是int[10],但是如果像这样的语法

    void print(int arr[][]);     

是允许的,但类型未知。因此出现了错误。


其他问题:您似乎还有很多其他问题,例如

函数定义是

int mulitpication(int num){  // returning an int

但实际上你这样做

return arr;  //where arr is an array of size int[num][num], defined locally

这是无效的,因为有两件事

  • an int and an int[num][num]不是同一类型。
  • VLA 的范围,即arr仅限于功能块,您不能让数组将地址返回给调用者并期望有意义的内容,因为返回的地址将不再有效。

我相信,你最好使用分配的内存(malloc()和家庭)并手动跟踪元素的索引/计数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数组的元素类型不完整。这是什么意思? [复制] 的相关文章

  • 带有 ASP.NET 按钮回发的 jQuery UI 对话框

    我的 ASP NET 页面上有一个运行良好的 jQuery UI 对话框 jQuery function jQuery dialog dialog draggable true resizable true show Transfer hi
  • 在 Android 中将图像从可绘制图像转换为字节数组

    由于我要将图像发送到 Parse com 因此我必须将其转换为字节数组 我的第一种方法是从图库中选择图像并将其转换为字节数组 如下所示 Override protected void onActivityResult int request
  • 在 LINQ 查询中进行转换

    是否可以在 LINQ 查询中进行强制转换 为了编译器的缘故 下面的代码并不糟糕 但最好将其放入一个查询中 Content content dataStore RootControl as Controls Content List
  • copy_from_user() 错误:目标大小太小

    我正在为内核模块编写 ioctl 处理程序 我想从用户空间复制数据 当我编译禁用优化的代码时 O0 gflags 编译器返回以下错误 include linux thread info h 136 17 error call to bad
  • 如何在 Linux 上重新实现(或包装)系统调用函数?

    假设我想完全接管 open 系统调用 也许要包装实际的系统调用并执行一些日志记录 一种方法是使用 LD PRELOAD http scaryreasoner wordpress com 2007 11 17 using ld preload
  • 维护 VS Test Project 中单元测试方法之间的上下文

    我想按顺序运行以下单元测试 使用随机数字的名称 密码等创建新客户 检索刚刚创建的客户并断言其属性包含相同的随机数 对同一用户调用 ForgotPassword 函数 并使用相同的随机数作为用户名 清楚地看到 我需要生成一次随机数 并在 3
  • 重载算术运算符

    赋值运算符可以声明为 T 运算符 const t 在类中 但不能以这种方式定义算术运算符 它必须是友元函数 我不明白为什么 你能解释一下吗 算术运算符不必须是友元 那么你可以这样定义 MyClass MyClass operator con
  • 如何在 C++ 中正确使用 cin.fail()

    我正在编写一个程序 从用户那里获取整数输入cin gt gt iUserSel 如果用户输入一个字母 程序就会进入无限循环 我试图用下面的代码来阻止这种情况 但程序进入无限循环并打印出 错误 输入 我该如何修复我的程序 cin gt gt
  • C# 可以为控制台应用程序部分类“程序”类吗?

    我想知道是否可以将为任何控制台应用程序创建的默认 程序 类更改为部分类 我想这样做是因为我想要更好的组织 而不是将所有方法都放在按区域分类的 1 个文件中 对我来说 将某些方法类别放在单独的文件中会更有意义 我对分部类的理解是 它是多个文件
  • 从单应性估计 R/T

    我一直在尝试计算 2 个图像中的特征 然后将这些特征传递回CameraParams R没有运气 特征已成功计算并匹配 但是问题是将它们传递回R t 我明白你必须分解Homography为了使这一点成为可能 我已经使用如下方法完成了 http
  • 在 json 模式中制作条件数组并提供适当的错误消息的最佳方法

    我想在 JSON 模式中约束一个 元组 数组 并获得不错的错误消息 但到目前为止我还没有成功 该数组由 2 个项目组成 第一个是字符串 第二个是对象 对象中允许 必需的属性取决于字符串 2个有效的例子是 color white a whit
  • 在一个解决方案中调用不同项目的方法

    1 个解决方案中有 3 个项目 我对第一个项目中的主文件进行的主要操作 但是我需要调用第三个项目中的方法并使用类 例如 第三个项目有 public DataClasses1DataContext base global WindowsFor
  • 在 Visual Studio 2012 Express 中设置 C++ 调试环境

    我需要调试的应用程序需要设置环境变量 这在 Visual Studio 2012 中似乎非常复杂 我想做类似的事情 set path c foo c bar c windows c program files application set
  • 让 Windows 尝试读取文件

    我正在对 Windows 文件系统进行某种封装 当用户请求打开文件时 Windows 调用我的驱动程序来提供数据 在正常操作中 驱动程序返回缓存的文件内容 但是 在某些情况下 实际文件没有缓存 我需要从网络下载它 问题是是否有可能让 Win
  • 为什么存在系统调用

    我一直在阅读有关系统调用及其在 Linux 中如何工作的内容 我还有更多的阅读要做 但我读过的一件事都没有回答 那就是 为什么我们需要系统调用 我知道系统调用是用户空间程序要求内核执行某些操作的请求 但我的问题基本上是 为什么用户空间程序本
  • 异步/等待 - 是*并发*吗?

    我一直在考虑 C 5 中新的异步内容 并且出现了一个特殊问题 据我了解 await关键字是一个简洁的编译器技巧 语法糖来实现连续传递 http en wikipedia org wiki Continuation passing style
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • 如何配置 qt Creator 以显示 C++ 代码而不是反汇编程序?

    昨天我做了很多事情 比如更新 GCC Clang 和重新安装 Qt Creator 今天 在逐步调试我的代码时 调试器显示的是反汇编代码 而不是我编写的 C 代码 紧迫F10 or F11 调试器正在进入汇编代码而不是 cpp nor h我
  • Adobe Illustrator 中的折线简化如何工作?

    我正在开发一个记录笔划的应用程序 您可以使用定点设备来绘制笔划 在上图中 我绘制了一个笔划 其中包含 453 个数据点 我的目标是大幅减少数据点的数量 同时仍然保持原始笔画的形状 对于那些感兴趣的人 上图笔画的坐标可以作为GitHub 上的
  • NHibernate:无状态会话错误消息无法获取代理

    我正在使用 nHibernate 无状态会话来获取对象 更新一个属性并将对象保存回数据库 我不断收到错误消息 无状态会话无法获取代理 我在其他地方有类似的代码 所以我不明白为什么这不起作用 有谁知道问题可能是什么 我正在尝试更新Screen

随机推荐

  • HTTP POST 返回错误:417“预期失败。”

    当我尝试 POST 到 URL 时 会导致以下异常 远程服务器返回错误 417 期望落空 这是示例代码 var client new WebClient var postData new NameValueCollection postDa
  • 从标头(邮递员)发出访问令牌请求时出现错误

    从标头发出访问令牌请求时 出现以下错误 错误 错误 不支持的授权类型 error description 不支持授予类型 我做错了什么或者错过了什么吗 请帮忙 附上截图 在此输入图像描述 您使用了错误的选项卡 标题应该只有 1 2 Cont
  • 如何在 C# 中从字节数组中删除和添加字节

    我有一个配置文件 cfg 用于创建命令行应用程序以将用户添加到 SFTP 服务器应用程序 cfg 文件需要为 cfg 文件中的每个条目保留一定数量的保留字节 我目前只是通过创建字节数组并将其转换为字符串 然后将其复制到文件中 将新用户附加到
  • 使用并行有线 RS232 从多个设备接收数据

    我目前正在开发一个小型应用程序 用于监控太阳能集热器产生的功率 电流 该阵列连接到 3 个逆变器 每台逆变器都有一个RS232接口 每10秒传输一行信息 当前状态 由于我想使用只有一个串行端口的设备进行监控 因此我需要想出一种能够并行读取所
  • Windows Phone 7:文件流异常

    我尝试使用 FileStream 使用命名空间 System IO 但出现异常 Attempt to access the method failed 这是代码 FileStream fs new FileStream file txt F
  • 如何使用 apache POI XWPFDocument 从 java 创建多级项目符号和编号?

    我已经阅读了许多与我的要求相关的博客和论坛 但到目前为止 我能够在获得的所有帮助下生成第一级的项目符号或编号 任何人都可以指导我如何使用 apache poi 创建多级编号 想知道 Apache POI XWPFDocument 是否支持这
  • 使用 KSOAP Android 创建 SOAP 请求

    我需要生成一个像这样的肥皂请求 SOAP请求 POST TennisMasters TennisMasters Listener asmx HTTP 1 1 Host playinkstudio com Content Type text
  • 使用 mod_rewrite 从子域重定向到主域

    我的问题是我有一个正常运行的子域 sub mydomain com sub 已加载到 mydomain com sub 中 我想做的是将所有对 sub mydomain com 的请求重定向到 mydomain com 不知怎的 当我是子域
  • SQL 过程 XML 性能:插入表中的列

    我在 SQL 过程中遇到问题 但似乎找不到正确的解决方案 该存储过程包含一个 XML 数据类型的参数 名称 data 传入消息的示例如下 实际消息包含更多节点 但为了简单起见 我将它们省略了
  • 使用 GDI+ API 绘制图像

    我正在使用GDI API 只是为了显示图像 bmp 屏幕上 这是执行任务的函数的代码 void drawImg ArmorInfo PupupWnd HDC hdc GdiplusStartupInput gdiplusStartupInp
  • 如何在MainActivity中获取ViewPager创建的fragment的元素?

    我有几个片段 它们是用ViewPager 我添加一个addOnPageChangeListener to the ViewPager在 MainActivity 中onCreate给出所选片段位置的方法 尽管我通过声明防止碎片自我毁灭set
  • 使用 async/await 时 GUI 冻结

    我试图找出下面的代码有什么问题 我认为使用 async 和 wait 让我忘记 GUI 问题 例如冻结 因为一些长代码阻塞了主线程 单击按钮后 GUI 会做出响应 直到调用longRunningMethod 如下所示 private asy
  • 保护远程 mysql 连接的安全

    我的处境很不幸 必须将本地 microsoft access 数据库与远程 mysql 数据库同步 我编写了一个 php 脚本 它将每 10 分钟同步一次数据库 但我绝对担心安全问题 到目前为止 我已经使用 cpanel 设置了远程 mys
  • 'NoneType' 对象在 BeautifulSoup 中没有属性 'text'

    当我搜索 时 我试图抓取谷歌结果 什么是2 2 但返回以下代码 NoneType object has no attribute text 请帮助我实现所需的目标 text What is 2 2 search text replace l
  • 如何处理for循环中路径名中的空格?

    尝试使用当前脚本的路径 并且该路径中包含空格 但我似乎无法让它工作 C Test Directory gt dir Volume in drive C has no label Volume Serial Number is 7486 CE
  • 自动滚动到页面底部然后顶部并重复

    我创建了一个仪表板 它会回显所有行 但我想要一个自动滚动 它会慢慢地向下滚动到页面底部 然后慢慢地滚动回顶部并重复 我已经用谷歌搜索了这个 但无法获得有效的代码 我一直在寻找 jQuery 代码 但任何东西都可以 因为页面会一直调整 所以不
  • 在 C++ 中从给定的种子生成相同的随机数序列

    我正在使用 mt19937 从给定种子生成随机字符串 如下所示 std string StringUtils randstring size t length uint64 t seed static auto chrs abcdefghi
  • 单击react-native中的菜单项时如何打开页脚选项卡屏幕之一?

    我正在创建一个反应本机应用程序 现在我想在单击菜单项时打开页脚选项卡屏幕之一 在这里 我附上了我的示例屏幕 可以从中清楚地了解我的问题 这是我的 GitHub 存储库 https github com SidathDananjaya Eve
  • 使用 C++ 编程时,如何在 win32 中创建子窗口?

    我是 C 以及 Windows 编程的新手 我使用 msdn 创建了一个窗口CreateWindow 功能 其工作正常 现在我想创建一个子窗口 父窗口应该控制子窗口 任何有关此的帮助示例代码 提前致谢 粗略地说 在父级的处理程序中 您希望创
  • 数组的元素类型不完整。这是什么意思? [复制]

    这个问题在这里已经有答案了 我想创建一个数组来存储任何整数 n 的乘法值 之后 我想将该数组传递给另一个函数并打印出该数组 但是 我收到以下错误 My code 这是我的 c 文件 include multiplication h incl