http://zhidao.baidu.com/question/752453227895219764.html?oldq=1
以下是我的回答内容(部分):
首先楼主要明白a这个数组中元素在内存中的储存情况:
[1][2][3][4][5] 左边这5个元素每个元素是一个int类型,每个元素占用4个字节大小(int类型为4节字),整个数组占用20个字节大小。
数组名是一个常量指针,指向数组第一个元素的地址。所以a+3中的a是一个指针常量与3相加, int *p = a +3 也与 int *p = &(a[0]) +3; 等效,
C语言与C++语言规定,一个指针变量加/减一个整数是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数相加或相减。
====================================================
这几年来回答问题已经有过好几次没通过,从没发过广告,从没恶意灌水。申诉从来没有得到回复。
上面这道问题两天内没解决,我若以后再来百度知道帮人我就是SX,再见百度知道!!
以下是我的回答内容(部分):
首先楼主要明白a这个数组中元素在内存中的储存情况:
[1][2][3][4][5] 左边这5个元素每个元素是一个int类型,每个元素占用4个字节大小(int类型为4节字),整个数组占用20个字节大小。
数组名是一个常量指针,指向数组第一个元素的地址。所以a+3中的a是一个指针常量与3相加, int *p = a +3 也与 int *p = &(a[0]) +3; 等效,
C语言与C++语言规定,一个指针变量加/减一个整数是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数相加或相减。
====================================================
这几年来回答问题已经有过好几次没通过,从没发过广告,从没恶意灌水。申诉从来没有得到回复。
上面这道问题两天内没解决,我若以后再来百度知道帮人我就是SX,再见百度知道!!