警告显示指针转换不兼容,第4行“预期的char **但参数的类型为char * [2]”中也有一条注释。
但是为什么请帮助和解释。通过动态内存分配可以解决这个问题吗?
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
char** cavityMap(int grid_count, char **grid) {
int i, j, max = 0;
char y = 'X';
if (grid_count == 1) {
return grid;
} else {
for (i = 0; i < grid_count; i++)
for (j = 0; j < grid_count; j++) {
if (max < (int) grid[i][j]) {
max = grid[i][j];
}
}
for (i = 0; i < grid_count; i++)
for (j = 0; j < grid_count; j++) {
if (i != 0 && i != grid_count - 1 && j != 0 && j != grid_count - 1) {
if (grid[i][j] == (char) max)
grid[i][j] = y;
}
}
return grid;
}
return 0;
}
int main() {
int n = 2, i, j;
char **result;
char s[2][2];
s[0][0] = '1';
s[0][1] = '7';
s[1][0] = '6';
s[1][1] = '8';
result = cavityMap(n, s);
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%c", result[i][j]);
}
printf("\n");
}
return 0;
}
答案 0 :(得分:3)
正如其他人所说,char a[][]
与char a[n][n]
但是,如果您有n
,则可以将其作为参数发送给函数
只要您还告诉函数#include <stdio.h>
void
process_array(int n, char a[n][n])
{
for (int i=0; i < n; i++)
{
for (int j=0; j < n; j++)
printf("%c", a[i][j]);
}
}
int
main()
{
char a[2][2] = {{'h', 'o'}, {'l', 'a'}};
process_array(2, a);
printf("\n");
}
是什么。像这样
void
process_array(int n, int m, char a[n][m])
哦,顺便说一句,如果您的数组不是正方形,那么您应该可以做到
void
process_array(char a[2][2])
这里的要点是,当在现代c语言中将数组声明为函数参数时,数组维不必是这样的常量:
sizeof(a)
请记住,数组始终作为指针传递给函数参数,因此在process_array
中执行 function copyUsingJquery(element_id) {
$(element_id).attr("contenteditable", true)
.select()
.on("focus", function () {
document.execCommand('selectAll', false, null)
})
.focus();
document.execCommand("Copy");
$(element_id).removeAttr("contenteditable");
setTimeout(function () {
//deslect text on page after a few seconds
//$(element_id).trigger("blur");
window.getSelection().removeAllRanges();
}, 3000);
}
会返回指针的大小