美文网首页
C语言指针、数组

C语言指针、数组

作者: 牛家村的枇杷 | 来源:发表于2016-04-14 11:47 被阅读0次

    指针

            int i = 10;
            int *p;
            p = &i;
            
            NSLog(@"i:%d,p:%p,*p:%d",i,p,*p);
    
    

    打印结果:

     i:10,p:0x7fff5fbff84c,*p:10
    

    错误示例:

              *p = &i;
    
    

    *号如果不在声明语句中,而只是右边有表达式的话,表明取*号右边变量中所存地址对应内存中的数据(取值、指针运算符)

    p是int*类型(一个指向int的指针)
    *是这个变量类型名称的一部分(当需要这种类型的变量p,应该这样写:(int*)p)

    • 在Objective-C中,引用对象使用的就是指针
            NSString *s = @"This is a string";
    

    在纯粹的C语言中,声明指向整形的指针为p,在代码中更倾向于写成 *p
    声明之外的意思是:指针p指向的对象
    写成*p是因为希望访问指针所指向的整形变量,这就是所谓的指针的解引用(dereferencing)

    而在Objective-C中,将指向对象的指针视为对象,这样就永远不能解引用。
    如已声明指向NSString的指针s,我们不会使用*s,而是直接使用s,就好像它是字符串一样。在OC语言中处理对象时更倾向于使用指针,而不是指针指向的对象。在后台OC语言会处理好凌乱的事务,会监视指针指向的内存,处理内存必要的操作。这对程序员来说很便利,却会导致代码松散。我们更倾向于说"s是一个NSString",实际上它是一个指向NSString的指针。

    • 数据类型 *指针变量名称;
            char *c;
            double *d;
    

    "数据类型"为该指针变量所存储的指针指向的存储单元中的数据的类型。

    相关文章

      网友评论

          本文标题:C语言指针、数组

          本文链接:https://www.haomeiwen.com/subject/ijxglttx.html