int a[2][2]; a[1]
тип a[1] -- int [2]
. В памяти лежат подряд два int. В случае указателя ответом будет "на указатель". Т.е. int **p; p[1]
тип p[1] -- int *
. В памяти лежит указатель, чей-то адрес. Как по-твоему приведение типа может поменять содержимое памяти с двух целых чисел на адрес? int a[2][2]
можно присвоить int (*p)[2]
. Это правильно и будет работать. Мало того, такое приведение типа не требует явного оператора приведения, оно будет работать без него: int a[2][2]; int (*p)[2]; p = a;
. как можно передать функцию в аргументе?
After determining the type of each parameter, any parameter of type “array of T”
or “function returning T” is adjusted to be “pointer to T” or “pointer to function
returning T,” respectively.
while(*pointer_string){ length++; if(*(pointer_string+1)) pointer_string++; else break; }
length = strlen(pointer_string);
pointer_string += length - 1;
Насчет, профилирования - вот именно доступ к массиву - скорость меняется.
sddvxd, для этого есть несколько вариантов.