int * p =NULL;和*p =NULL的区别a和a的区别
生活随笔
收集整理的這篇文章主要介紹了
int * p =NULL;和*p =NULL的区别a和a的区别
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.int * p =NULL;和*p =NULL的區(qū)別
1 .int * p =NULL
int *p=NULL;
定義一個指針變量p,其指向的內(nèi)存里面保存的是int類型的數(shù)據(jù);再定義變量p的同時把p的值設(shè)置為0x00000000, 而不是把*p的值設(shè)置為0x00000000
2.*p =NULL
int i =10; int * p =&i; *p =NULL;- int i = 10;
- int * p =&i;
- *p =NULL;
p指向的內(nèi)存由原來的10變?yōu)榱?; 而p本身的值(內(nèi)存地址)沒變
2.a和&a的區(qū)別
int a[5] = { 1,2,3,4,5 };int *ptr = (int *)(&a + 1);printf("%d,%d", *(a + 1), *(ptr - 1));-
&a :a單獨存在,為數(shù)組a的首地址
-
&a+1:a為數(shù)組的首地址,數(shù)組的首地址加上 (數(shù)組元素個數(shù))
sizeof(int)即下個數(shù)組的首地址
所以兩個數(shù)相差20個bite -
a:數(shù)組首元素地址a[0]
-
a+1:數(shù)組下一個元素的首地址
-
值相同意義不同
所以兩個數(shù)相差4個bite -
(a+1):沒有單獨放在括號內(nèi)部,降級變?yōu)槭自氐刂?#xff0c;
即為數(shù)組下一個元素首地址 -
(ptr-1):ptr指向的是a[5],并且ptr是int*型的,所以他減1指向a[4]
總結(jié)
以上是生活随笔為你收集整理的int * p =NULL;和*p =NULL的区别a和a的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: label包裹着input,给label
- 下一篇: 《画江山》中玩家等级达到多少级可以建立帮