ObjectC基础之指针学习

如果有过其他语言基础的话,Object-C的指针可能就是Java中的变量了。

在Object-C中每个变量都存有了一个内存地址,而且每个内存地址都定义了他的地址,可以使用符合&运算符进行访问,该符合表示内存中的地址。

#import 

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 

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

从上可以得出:ptr 为空

再看一个例子:

#import 

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最新版,亲测

公众号:
ObjectC基础之指针学习_第1张图片

你可能感兴趣的:(Objective-C老古董,objective-c,ios,swift,flutter,指针)