日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

0基础学习ios开发笔记第二天

發布時間:2025/6/17 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 0基础学习ios开发笔记第二天 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • C語言的基本結構

    c語言的入口函數是main函數。

    main函數的返回值行業標準是int

    return 數字;返回值

    每條語句最后以分號結尾

    注釋:行注釋、塊注釋

    int main(void) {// line comment/** block comment * block comment*/ }
  • C語言數據類型
    數據類型就是訪問內存的方式
    在64位機器上查看如下數據類型的內存訪問方式:
    int main(void) {char ci = 8; // 1個字節,8位,BYTEchar csum = ci + 8;short si = 16; // 2個字節,16位,WORDshort sum = si + 16;int ii = 32; // 4個字節,32位,DWORD (double word)int isum = ii + 32;long long li = 64; // 8個字節,64位,QWORD (quater word)long long lsum = li + 64; } 使用命令 objdump -d -M interl a.out 按intel的匯編指令格式查看反匯編結果如下: 4004ed: 55 push rbp4004ee: 48 89 e5 mov rbp,rsp4004f1: c6 45 e2 08 mov BYTE PTR [rbp-0x1e],0x84004f5: 0f b6 45 e2 movzx eax,BYTE PTR [rbp-0x1e] ; 把8位數據復制到32寄存器,位數不夠的用0填充4004f9: 83 c0 08 add eax,0x84004fc: 88 45 e3 mov BYTE PTR [rbp-0x1d],al ; 把eax的低8位數據復制到棧4004ff: 66 c7 45 e4 10 00 mov WORD PTR [rbp-0x1c],0x10 400505: 0f b7 45 e4 movzx eax,WORD PTR [rbp-0x1c] ; 把16位數據復制到32寄存器,位數不夠的用0填充400509: 83 c0 10 add eax,0x1040050c: 66 89 45 e6 mov WORD PTR [rbp-0x1a],ax ; 把eax的低16位數據復制到棧400510: c7 45 e8 20 00 00 00 mov DWORD PTR [rbp-0x18],0x20400517: 8b 45 e8 mov eax,DWORD PTR [rbp-0x18] ; 把32位數據復制到32位寄存器40051a: 83 c0 20 add eax,0x2040051d: 89 45 ec mov DWORD PTR [rbp-0x14],eax400520: 48 c7 45 f0 40 00 00 mov QWORD PTR [rbp-0x10],0x40400527: 00 400528: 48 8b 45 f0 mov rax,QWORD PTR [rbp-0x10] ; 把8個字節的數據復制到rax寄存器,rax是64位寄存器40052c: 48 83 c0 40 add rax,0x40400530: 48 89 45 f8 mov QWORD PTR [rbp-0x8],rax400534: 5d pop rbp

    ?

  • C語言指針
    寫如下程序觀察指針
    #include <stdio.h>int main() {int x = 257;char y ='k';int *p = &x;printf("pointer lenth is %ld\n", sizeof(p));printf("*p is %d\n", *p);printf("p is %lx\n", p);printf("%p\n", &x);printf("%p\n", &y);printf("%p\n", &p); }

    編譯程序時加上-g參數可以加入調試符號信息,同時objdump -S的時候也可以把反匯編代碼和C源碼對應起來
    使用命令

    objdump -d -M intel -S a.out

    查看反匯編代碼部分如下:

    typedef int * int_p; int main() {40052d: 55 push rbp40052e: 48 89 e5 mov rbp,rsp400531: 48 83 ec 10 sub rsp,0x10int x = 257; 400535: c7 45 f4 01 01 00 00 mov DWORD PTR [rbp-0xc],0x101 ; 4字節大小的數據會對齊到能整除4的內存地址上char y ='k'; 40053c: c6 45 f3 6b mov BYTE PTR [rbp-0xd],0x6b ; char為1字節,所以沒有對齊的要求int *p = &x; 400540: 48 8d 45 f4 lea rax,[rbp-0xc] ; 將x的地址放到rax寄存器400544: 48 89 45 f8 mov QWORD PTR [rbp-0x8],rax ; 再放到p變量中

    ?

    內存布局如下圖:

    未完待續……
  • C語言部分語法
  • 轉載于:https://www.cnblogs.com/turing-apple/p/4912937.html

    總結

    以上是生活随笔為你收集整理的0基础学习ios开发笔记第二天的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。