ios基礎入門——malloc方法

來源:互聯網
上載者:User

標籤:

char m;

scanf(" %c",&m); //前面加空格是為了去掉空格、斷行符號等操作

NSLog(@"the character is %c",m);


    上面這個程式是各位比較熟悉的兩個方法一個輸入、一個輸出,但是如果我改一下改成


char *m;

NSLog(@"\n請輸入一個字元");

scanf(" %c",m);

NSLog(@"\nthis is %c",*m);


    是否正確呢,編譯時間是否會報錯,運行時是否會出問題?

    其實這個程式,如果編譯的時候不會出現異常,但是如果啟動並執行話,會出現運行時異常(出現lldb命令,使用kill命令結束即可),原因是就是我們定義了一個char指標m,這個指標沒有進行初始化賦值,導致程式運行時無法找到儲存這個字元的記憶體空間,如果改成


char *m;

m=(char *)malloc(sizeof(char));//malloc()動態分配記憶體,用malloc分配記憶體的首地址,然後賦值給m

NSLog(@"\n請輸入一個字元");

scanf(" %c",m);

NSLog(@"\nthis is %c",*m);


      如果使用malloc方法進行分配空間之後,程式便可以正常進行,sizeof方法獲得對應類型的空間大小


   趁熱再來一發,因為使用malloc進行動態分配空間,所以我們可以使用char指標輸出字串,如下:

char *a;

a=(char *)malloc(sizeof(char)*100); //動態分配100個連續的char記憶體位址

NSLog(@"\n請輸入一個字串");

scanf(" %s",a);

NSLog(@"\nthis is %s",a);







ios基礎入門——malloc方法

聯繫我們

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