2D数组-排序|访问冲突读取位置错误|在C中

2D数组-排序|访问冲突读取位置错误|在C中,c,arrays,sorting,C,Arrays,Sorting,嘿,伙计们,我正试图完成我的代码,但我得到的不是值,而是一个错误消息 .当我准备输入留置权编号54或60时 if(*arr[rows*columns]<num) or printf("Number value %d in a two-dimensional size is:%d\n",num,*arr[num]); 我猜行*列比您分配的要大,这意味着您试图取消引用随机指针,导致未定义的行为并导致崩溃 此外,您永远不会对任何内容进行排序,因为外循环条件始终为false(请尝试将更改为我的赌

嘿,伙计们,我正试图完成我的代码,但我得到的不是值,而是一个错误消息 .当我准备输入留置权编号54或60时

if(*arr[rows*columns]<num) or printf("Number value %d in a two-dimensional size is:%d\n",num,*arr[num]);

我猜
行*列
比您分配的要大,这意味着您试图取消引用随机指针,导致未定义的行为并导致崩溃

此外,您永远不会对任何内容进行排序,因为外循环条件始终为false(请尝试将
更改为
我的赌注是:

printf("Number value %d in a two-dimensional size is:%d\n",num,*arr[num]);
您需要一些数字并将其放入变量num中。是什么让您认为num是num th行的第一个数字?

这段代码可能会有,而且可能会有更多的问题。 编辑:
*arr[num]
从右向左求值。
[]
的优先级高于
*
运算符。

因此它首先执行arr[num]
,其结果是解引用的
*(arr[num])
.num被视为一行,因此,如果您没有足够的行,则会因为超出数组而导致内存冲突

为了更好地理解问题,您需要在调试器中运行程序。然后,当崩溃发生时,它将停在崩溃位置,您将能够检查和遍历调用堆栈以及exami变量和表达式的ne值。我做了。我在帖子中告诉过你如果(arr[rowscolumns]),所以我把这一行改为(i=0;iSo应该是什么样子?如果我输入这个num是3,那么它应该给我数组中的第三大数字no?num是我们从用户那里得到的数字。num number的值应该显示num system size的值。因此,在我对数组排序后,如果我写入arr[num]是应该给我数组中第三个数字的值。如果我输入3。我似乎有一个相当大的信息差距,我对这个主题是相当陌生的。希望有更厚的提示或信息材料阅读,以便我可以解决这个练习似乎你缺少多维数组的基本知识。在不分配内存的情况下做这个练习在固定大小的数组上运行。当您得到它时,更改它将需要5分钟的时间。也要一步一步地进行。每次更改时都要检查。如果您在排序之前和之后尝试打印数组,您不会得到100行无法预测的代码,即使您愿意逐行调试。我只是打印了它,结果并不是这样n对数组排序如果(arr[i][j]>arr[i][j+1],则此行有问题
printf("Number value %d in a two-dimensional size is:%d\n",num,*arr[num]);