1.什么是指針?
在c 語言中每一個變量或者函數(shù)都有自己的內(nèi)存地址,如果想獲取變量可以通過變量名直接獲取,想要調(diào)用某一個函數(shù)也可以直接調(diào)用函數(shù)名,因為變量名和函數(shù)名就代表了他們各自的內(nèi)存地址,但有些情況或許拿不到變量名 可以再重新定義一個變量P來存儲變量"testNumber"的內(nèi)存地址,根據(jù)存儲的內(nèi)存地址就可以找"testNumber"所存儲的值,那么這個P就成為成為指針.
2.指針與變量的區(qū)別
指針存儲另一個變量的內(nèi)存地址
變量儲存自己的二進(jìn)制數(shù)據(jù)
(解釋并不嚴(yán)謹(jǐn),但說出了重點)
3.指針的使用
int testNumber = 20;
int *p = &testNumber;
print("%d",*p);
*p(在指針變量p 前面加一個*代表從指針存貯的內(nèi)存空間中取出值)
代碼執(zhí)行完的內(nèi)存圖.png
4.指針變量占據(jù)內(nèi)存
Paste_Image.png
注意: 雖然各種類型指針都占有相同字節(jié),但是一定要用同種類型的指針去存儲同種類型的變量,否則極有可能造成取值錯誤的情況
5.例子??
用一個函數(shù)返回多個值 這樣函數(shù)就可以有兩個返回值
在變量前面加上&代表取出這個變量的內(nèi)存地址
- (void)viewDidLoad {
[super viewDidLoad];
int a = 10;
int b = 20;
int cha = 0;
int he = sum(a, b, &cha);
printf("%d\n",a);
printf("%d\n",b);
printf("%d\n",cha);
printf("%d\n",he);
}
int sum(int a,int b,int *cha)
{
*cha = b - a;
return a + b;
}
打印結(jié)果:
10
20
10
30
參考文檔:
http://www.cnblogs.com/mjios/archive/2013/03/16/2963645.html