Значение, хранящееся в массиве в (0,0)
, не изменилось. Даже если вы передали его функции. Что не так в вашей программе, так это то, как вы ожидаете, printf
напечатать элемент двухмерного массива, который имеет тип данных int
.
С array
- это двумерный массив данных типа int
. Элемент, хранящийся в arr[0][0]
, будет иметь тип данных int
.
Таким образом, вы должны изменить свою программу:
void check(int arr[5][6])
{
printf("%d", arr[0][0]);
}
int main()
{
int arr[5][6];
arr[0][0] = 5;
check(arr);
}
код, который вы выложили будет иметь неопределенное поведение. Код, который вы вставили, даст предупреждение. Взгляните на предупреждение, которое я получил, составив код с помощью gcc.
предупреждение: формат '% s' ожидает, что аргумент типа 'символ *', но аргумент имеет тип 2 '' Int [-Wformat =] Е ("% s", обр [0] [0]);
Помните: вы никогда не должны игнорировать предупреждение.
Вы использовали спецификатор формата "%s"
, который принимает указатель на массив символов в списке аргументов. Вам просто нужно изменить его на "%d"
.
В c. Немного приведены ниже:
%c - For Character Variable
%d - For Integers
%f - For Double
%s - For Null-Terminated Character Array
%p - For Pointers (of void * type)
'% d' или'% i' - спецификатор формата для 'int', а не '% s'. – Ryan
Замечание Пер Райана, если вы скомпилировали с '-Wall', компилятор отметит ваш' printf' как несоответствие. Кроме того, убедитесь, что вы делаете '#include' –