指標形參,二級指標改值

來源:互聯網
上載者:User

標籤:sscanf   can   print   nbsp   printf   stdio.h   img   eof   程式   

程式: 

#include <stdio.h>#include <stdlib.h>void change(char *a){//副本    printf("change 1:%s\n", a);    a="change";//實參副本指向改變,不影響實參的指向    printf("change 2:%s\n", a);}void change2(char **a){    printf("change2 1:%s\n", *a);    *a="changea";//a本身不變,改變a指向記憶體的內容,a指向記憶體是指標a,改變指標a的指向,原來的指標a指向內容是不變的    printf("change2 2:%s\n", *a);}void change3(char *a){    printf("change3 1:%s\n", a);    // char *b=(char *)malloc(sizeof(char)*10);//malloc分配堆記憶體(但b本身是在棧中。棧分配:char b[10],函數返回即釋放),除非free否則程式退出都不會釋放    // a=b;    sscanf("changeb", "%s", a);//直接改變a指向地址的值    printf("change3 2:%s\n", a);    // free(b);}void change4(int *a){//副本    printf("change4 1:%d\n", *a);    int b=80;    a=&b;//用實參的副本,副本指向變了,但不影響原實參的指向。除非改變原實參指向的值,即change5    printf("change4 2:%d\n", *a);}void change5(int *a){    printf("change5 1:%d\n", *a);    *a=80;//a本身不變,改變a指向記憶體的內容    printf("change5 2:%d\n", *a);}void change6(int **a){    int b=70;    printf("change6 1:%d\n", **a);    *a=&b;//和change2一樣    printf("change6 2:%d\n", **a);}int main(){    //    char *a = "main";    char *a1=a;    change(a);//傳入一級指標,函數內使用是該指標的副本    printf("main 1:%s\n\n", a);//不改變,此處為main    change2(&a);//傳入二級指標    printf("main 2:%s\n", a);//改變為change2中賦予的值    printf("main 2 a1:%s\n\n", a1);//change2隻是將a重新指向了新值,而原指向的值 即a1指向的值是不變的    char b[10] = "mainb";//不能此處char *b,而函數內不分配記憶體,否則sscanf報錯段吐核    // char *b="xx";    change3(b);    printf("main 3:%s\n\n", b);//改變為change3中sscanf賦予的值    int c=90;    change4(&c);    printf("main 4:%d\n\n", c);//不改變,還是90    change5(&c);    printf("main 5:%d\n\n", c);//改變為change5賦予的新值    int *d=&c;//和change2一樣    int *d1=d;    change6(&d);//傳入二級指標    printf("main 6:%d\n", *d);//改變    printf("main 5:%d\n\n", *d1);//原c值    return 0;}

 

結果:

 

指標形參,二級指標改值

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.