int a[5] = {1,2,3,4,5};
數(shù)組和指針是C語言的精髓也是它的難點。特別是對于數(shù)組名a以及&a,很多同學一直都搞不清楚。今天就說說我自己的理解,希望能對大家有所幫助。
a表示的是a[0]的起始地址,而&a表示的整個數(shù)組的起始地址。只是恰好他們表示的地址相等,但并不能說他們兩個就完全相等。就像浙江省的省政府在杭州,而杭州市的市政府也在杭州,但不能說浙江省政府就等于杭州市政府。
為了方便理解,我們來對數(shù)組進行運算。假設a的地址是0x00ffff00,那么a+1和&a+1分別是多少。
因為a表示的是a[0]的首地址,所以a+1加的就是一個a[0]元素的大小,即一個int的大小4,所以a+1為0x00ffff04
&a代表的是整個數(shù)組的首地址,所以&a+1加的就是整個數(shù)組的大小,即4*5=20,所以&a+1為0x00ffff14
其實他們完全是兩回事,只不過剛好數(shù)值上相等而已
數(shù)組和指針是C語言的精髓也是它的難點。特別是對于數(shù)組名a以及&a,很多同學一直都搞不清楚。今天就說說我自己的理解,希望能對大家有所幫助。
a表示的是a[0]的起始地址,而&a表示的整個數(shù)組的起始地址。只是恰好他們表示的地址相等,但并不能說他們兩個就完全相等。就像浙江省的省政府在杭州,而杭州市的市政府也在杭州,但不能說浙江省政府就等于杭州市政府。
為了方便理解,我們來對數(shù)組進行運算。假設a的地址是0x00ffff00,那么a+1和&a+1分別是多少。
因為a表示的是a[0]的首地址,所以a+1加的就是一個a[0]元素的大小,即一個int的大小4,所以a+1為0x00ffff04
&a代表的是整個數(shù)組的首地址,所以&a+1加的就是整個數(shù)組的大小,即4*5=20,所以&a+1為0x00ffff14
其實他們完全是兩回事,只不過剛好數(shù)值上相等而已