怎么做国内外网站,广州城乡建设网站,广州营销网站建设公司哪家好,最新远程网站建设服务器字符串是以空字符#xff08;\0#xff09;结尾的char类型数组。
0x01 定义字符串和初始化
用双引号括起来的内容称为字符串字面量#xff0c;也叫字符串常量#xff0c;双引号中的字符串和编译器自动加入\0字符#xff0c;都作为字符串存储在内存中
#include st…字符串是以空字符\0结尾的char类型数组。
0x01 定义字符串和初始化
用双引号括起来的内容称为字符串字面量也叫字符串常量双引号中的字符串和编译器自动加入\0字符都作为字符串存储在内存中
#include stdio.hint 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 deng4 (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 deng8 (00422024)]
00401040 66 89 55 FC mov word ptr [ebp-4],dx
00401044 A0 26 20 42 00 mov al,[string hello deng0Ah (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类型数组。分析和另一篇数组博客说的一样。