二维数组
二维数组寻址公式
对于
type ary2D[M][N]
其ary2D[i][j]语速对应的地址是:
char g_Data[6];
void SetElement23(int nRow, int nCol, char chValue)
{
g_Data[nRow * 3 + nCol] = chValue;
}
void SetElemet32(int nRow, int nCol, char chValue)
{
g_Data[nRow * 2 + nCol] = chValue;
}
int main(int argc, char* argv[])
{
SetElement23(1, 2, 'a');
SetElemet32(2, 0, 'b');
return 0;
}
数组传参
预测以下代码结果(还需要看)
void Fun(char chAry[30])
{
printf("%d\r\n", sizeof(chAry));
}
int main(int argc, char* argv[])
{
char chAry[30] = { 0 };
printf("%d\r\n", sizeof(chAry));
Fun(chAry);
return 0;
}
当数组被当作参数传递时,其实传递的不是数组本身,而是数组的首地址。
void Fun(char chAry[30])
{
chAry[1] = 5;
//printf("%d\r\n", sizeof(chAry));
}
void FunNormal(char chValue)
{
chValue = 'b';
//printf("%d\r\n", sizeof(chValue));
}
int main(int argc, char* argv[])
{
char chAry[128] = { 0 };
//printf("%d\r\n", sizeof(chAry));
char hello = 'a';
FunNormal(hello);
printf("%c\r\n", hello);
Fun(chAry);
printf("%d\r\n", chAry[1]);
return 0;
}
数组传递过程,实际传递的是数组首地址,但会有影响:
- 函数内部,可以通过数组形参,改变实参的内容
- 传参后,形参丢失了数组的长度信息,退化为地址。后面我们会学习到,其实不是退化为普通的地址,而是退化为“指针”。
来源:CSDN
作者:未北、
链接:https://blog.csdn.net/weixin_43365952/article/details/103958232