注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

ksnowlv的博客

积土成丘,集腋成裘,坚持再坚持!

 
 
 

日志

 
 

C/C++_指针数组&数组指针区别  

2013-12-09 11:45:19|  分类: C/C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  问题背景:最近几个月面试一些C/C++岗位面试者,指针数组&数组指针区别这个问题没有一个知道的,特意写下来,分享给有需要的人。限于时间关系,不深入研究,感兴趣的,可以好好研究下。


  简要来说二者之间的区别:

数组指针-指向数组的指针,也就是一个指针,指向的类型是数组。

指针数组-数组元素是指针的数组,也就是一个数组,其元素是是指针。

注意:[]优先级比*高!!!。


- (void)testPointerArrayArrayPointer

{

    //数组指针-指向数组的指针,也就是一个指针,指向的类型是数组

    //指针数组-数组元素是指针的数组,也就是一个数组,其元素是是指针

    //由于[]优先级比*高,像*a[5],是指针数组,(*a)[5]是数组指针。

    

    const NSInteger KArrayLength = 5;

    

    char *p[KArrayLength];

    

    memset(p, 0, KArrayLength * sizeof(int));

    

    for (NSInteger i = 0 ; i < KArrayLength; ++i) {

        p[i] = malloc(5);

        sprintf(p[i], "%dab\n",i);

        printf("p[%d]:%s",i,p[i]);

    }

    

    for (NSInteger i = 0 ; i < KArrayLength; ++i) {

        free(p[i]);

        p[i] = NULL;

    }

    

    char (*q)[KArrayLength];

    

    char a[KArrayLength] = "abcd";

    

    q = &a;

    

    printf("q =%s,q address =%p",*q,q);

}


日志输出如下:

p[0]:0ab

p[1]:1ab

p[2]:2ab

p[3]:3ab

p[4]:4ab

q =abcd,q address =0xbfffc927(lldb) 


上面显然,p表示的指针数组,q表示的是数组指针,你分清了么?


  评论这张
 
阅读(88)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018