C语言的二维数组中a[i]+j这个j为什么表示的是字节数?
看不懂这里,谭浩强版本的C.中说的,但是它下一句就说这个字节为j乘2(整形数值)。。如题上的那个字节数这个字眼看不懂。...
看不懂这里,谭浩强版本的C.中说的,但是它下一句就说这个字节为j乘2(整形数值)。。如题上的那个字节数这个字眼看不懂。
展开
展开全部
如果有二维数组
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 个 字节
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 个 字节
2014-03-07
展开全部
指针变量的增减是按地址进行的,a[i] + j应该表示的是a[i] + j*sizeof(....)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询