码迷,mamicode.com
首页 > 编程语言 > 详细

C专家编程之为什么C语言把数组形参当做指针:数组/指针实参

时间:2014-08-04 17:39:17      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:style   os   io   ar   amp   size   c   har   

#include<stdio.h>
void print_array_test(char ca[])
{
        printf("ca : %s\n",ca);
        printf("&ca : %s\n",&ca);
        printf("&(ca[0]) : %s\n",&(ca[0]));
        printf("&(ca[1]) : %s\n",&(ca[1]));
        printf("*(ca+0) : %c\n",*(ca+0));
        printf("*(ca+1) : %c\n",*(ca+1));
        printf("ca+1 : %s\n",ca+1);
}


void print_ptr_test(char *pa)
{
        printf("pa : %s\n",pa);
        printf("&pa : %s\n",&pa);
        printf("&(pa[0]) : %s\n",&(pa[0]));
        printf("&(pa[1]) : %s\n",&(pa[1]));
        printf("pa+1 : %s\n",pa+1);
        printf("pa[1] : %c\n",pa[1]);
        printf("*(pa+1) : %c\n",*(pa+1));
        printf("++pa : %s\n",++pa);
}
int main()
{
        char abc[]="hello,world!";
        print_array_test(abc);
        print_ptr_test(abc);

        return 0;
}

数组abc[20]="hello,world!"

中&abc[i]与abc+i含义相同——取的是abc[i]的地址

指针pa =abc;

pa[i]与*(pa+i)是等价的——取的是abc[i]的值

鉴于以上程序,运行之:

[root@localhost code]# ./arrayandptr
ca : hello,world!
&ca : ???,??;
&(ca[0]) : hello,world!
&(ca[1]) : ello,world!
*(ca+0) : h
*(ca+1) : e
ca+1 : ello,world!
pa : hello,world!
&pa : ???,??;
&(pa[0]) : hello,world!
&(pa[1]) : ello,world!
pa+1 : ello,world!
pa[1] : e
*(pa+1) : e
++pa : ello,world!
[root@localhost code]#



C专家编程之为什么C语言把数组形参当做指针:数组/指针实参,布布扣,bubuko.com

C专家编程之为什么C语言把数组形参当做指针:数组/指针实参

标签:style   os   io   ar   amp   size   c   har   

原文地址:http://blog.csdn.net/yuesichiu/article/details/38372331

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!