C语言的二维数组中a[i]+j这个j为什么表示的是字节数?

看不懂这里,谭浩强版本的C.中说的,但是它下一句就说这个字节为j乘2(整形数值)。。如题上的那个字节数这个字眼看不懂。
最新回答
生活不易靠演技

2024-05-18 00:15:15

如果有二维数组
short int a[4][5];
那么 a[i] 就不是下标变量,而是地址:&a[i][0]
所以 a[i]+j 是 a[i] 这个单元所在地 的 下面 的 第 j 个 元素的 地址
a[i]+j 等于 &a[i][0] + j * sizeof(short int) -- 加的这项东西 就是 j乘2 个 字节。

老谭
的书很老了。现在的 int 默认 是 4 字节。
int a[4][5]; a[i]+j 是 :&a[i][0] + j * sizeof(int) -- 加的这项东西 就是 j乘4 个 字节
char a[4][5]; a[i]+j 是 :&a[i][0] + j * sizeof(char) -- 加的这项东西 就是 j乘1 个 字节
double a[4][5]; a[i]+j 是 :&a[i][0] + j * sizeof(double) -- 加的这项东西 就是 j乘8 个 字节
宅m

2024-05-18 19:14:17

指针变量的增减是按地址进行的,a[i] + j应该表示的是a[i] + j*sizeof(....)。