C專家編程之為什麼C語言把數組形參當做指標:數組/指標實參

來源:互聯網
上載者:User

標籤:等價   編程   tracking   含義   ptr   and   data   print   include   

#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]的值

鑒於以上程式,執行之:

[[email protected] 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!
[[email protected] code]#



C專家編程之為什麼C語言把數組形參當做指標:數組/指標實參

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.