A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int a[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};
访问 第一行的第1个元素地址表示:

a + 1 =  &a[1]  =  a[1]  =  &a[1][0]  =  *(a + 1)

关于这个 a + 1 = *(a + 1) 不是很明白?a + 1是一个地址,而 *(a + 1)是一个值 他们能相等嘛? 第一感觉是这样的,但有人说他们确实相等。求高人、大神指点。。。感激不尽!

16 个回复

正序浏览
专打饭桶 发表于 2015-9-6 20:06
数组的名称代表的是指向数组的指针,所以a代表的是指针,即指向该数组的指针,a+1,表示指针后移即下标为a[ ...

恩  好的   谢谢解答。。。
回复 使用道具 举报
本帖最后由 专打饭桶 于 2015-9-6 20:12 编辑

数组的名称代表的是指向数组的指针,所以a代表的是指针,即指向该数组的指针,a+1,表示指针后移即下标为a[1]的地址,a+1和*(a+1),的确是不相等的,一个是下标为1的地址、一个是下标为1的数值。  a+1 == &a[1];  a[1] == *(a+1);  数组和指针的最紧密的关系就是数组的名称就是指向数组的指针,要明白这个。
回复 使用道具 举报

谢谢。。。
回复 使用道具 举报
chensheng06 发表于 2015-9-6 08:27
以前学C++ 最烦 的就是指针了,虽然确实蛮好用的

恩  所以必须要学会弄懂啊  免得以后跟不上  这个太重要啦!
回复 使用道具 举报
lion_good 发表于 2015-9-6 08:18
a+1 为右值,怎么能被赋值?你的意思是 a + 1 == *(a + 1) ?

对  就是==   我少写了一个等号
回复 使用道具 举报
wunairensheng95 发表于 2015-9-5 22:49
你确定这个问题应该拿到Java专区来问?不应该去c那里求答案么

恩 好的   谢谢提醒。。。
回复 使用道具 举报
以前学C++ 最烦 的就是指针了,虽然确实蛮好用的
回复 使用道具 举报
a+1 为右值,怎么能被赋值?你的意思是 a + 1 == *(a + 1) ?
回复 使用道具 举报
java 也有指针这说法的么,你不说俺也不知道
回复 使用道具 举报
你确定这个问题应该拿到Java专区来问?不应该去c那里求答案么   
回复 使用道具 举报
不懂!!!!!!!!!!!!!
回复 使用道具 举报
不错  赞一个
回复 使用道具 举报
菜鸟帮顶
回复 使用道具 举报
第二,完全看不懂你想问的问题,你能否把问题完整的描述一下?
回复 使用道具 举报
首先第一句话你写错了 int a[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};  前面不要写3和4,后面已经写出具体的数组元素了,前面不可以加上数组的长度

点评

要写成 int a[][] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};  发表于 2015-9-5 22:09
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马