ObjectC基礎之指針學習

如果有過其他語言基礎的話,Object-C的指針可能就是Java中的變量了。

在Object-C中每個變量都存有了一個內存地址,而且每個內存地址都定義了他的地址,可以使用符合&運算符進行訪問,該符合表示內存中的地址。

#import <Foundation/Foundation.h>

int main () {
   int  var1;
   char var2[10];

   NSLog(@"內存地址: %x\n", &var1 );
   NSLog(@"內存地址: %x\n", &var2 );

   return 0;
}

## 指針是什麼?
指針就是一個變量,它的值是另一個變量的地址,它與任何變量或常量一樣,必須先聲明指針,然後纔可以使用它來存儲任何變量的地址。

以下是一些數據類型的指針聲明:

```objectivec
int     *ip;    /*指向int 類型的指針*/
double  *dp;
float   *ft;
char    *ch;

所有指針的值都是實際數據類型的地址值。都是地址內存的長16進制數。

空指針NULL

空指針NULL是一個常量,返回的數值是0,要檢查空指針可以用if,如下:

#import <Foundation/Foundation.h>

int main(){
	int *ptr = NULL;
	NSLog(@"value is: %x\n",ptr);
	if(!ptr){
		NSLog("ptr 爲空");
	}
	return 0;
}

從上可以得出:ptr 爲空

再看一個例子:

#import <Foundation/Foundation.h>

int main(){
	int var = 20;   /*變量定義*/
	int *p;     /*指針變量聲明*/
	
	ip = &var;  /*在指針變量中存儲var 的地址*/
	
	NSLog(@"value: %x\n",&var);         
	NSLog(@"ip variable : %x\n",ip);	/*存儲在指針變量中的地址*/
	NSLog(@"*ip  variable: %d\n",*ip);  /*使用指針訪問該值*/
	
	return 0;
}

以上輸出日誌爲:

value: 23bea2dc
ip variable: 23bea2dc
*ip variable: 20

學到最後:我可以暫時理解爲Object-C中的指針就是 Java中的變量了嗎??

更多課程請訪問個人主頁:

Github搭建個人博客(2019最新版,親測

公衆號:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章