C和汇编----字符串
生活随笔
收集整理的這篇文章主要介紹了
C和汇编----字符串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
字符串是以空字符(\0)結尾的char類型數組。
0x01 定義字符串和初始化
用雙引號括起來的內容稱為字符串字面量,也叫字符串常量,雙引號中的字符串和編譯器自動加入\0字符,都作為字符串存儲在內存中
#include "stdio.h"int main() {char string[]="hello deng";return 0;}反匯編我們可以看到,hello deng的內容已經在另一個位置,首先給string一個地址,然后將hello deng復制到以string為首地址的內存中
5: char string[]="hello deng"; 00401028 A1 1C 20 42 00 mov eax,[string "hello deng" (0042201c)] 0040102D 89 45 F4 mov dword ptr [ebp-0Ch],eax 00401030 8B 0D 20 20 42 00 mov ecx,dword ptr [string "hello deng"+4 (00422020)] 00401036 89 4D F8 mov dword ptr [ebp-8],ecx 00401039 66 8B 15 24 20 42 00 mov dx,word ptr [string "hello deng"+8 (00422024)] 00401040 66 89 55 FC mov word ptr [ebp-4],dx 00401044 A0 26 20 42 00 mov al,[string "hello deng"+0Ah (00422026)] 00401049 88 45 FE mov byte ptr [ebp-2],al 6: return 0; 0040104C 33 C0 xor eax,eax
從下圖可以看出,字符串在內存中的確以\00結尾,并且字符在內存存儲的是字符的ASCII值,所以在指定數組大小時,要確保數組的元素個數至少比字符串長度多1,所有未被使用的元素都被自動化初始化為\00
0x02 指針和字符串
字符串是以空字符(\0)結尾的char類型數組。分析和另一篇數組博客說的一樣。
總結
以上是生活随笔為你收集整理的C和汇编----字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用堆栈做循环
- 下一篇: dnf武器调品级问题