Mas*_*tic 4 c c++ assembly printf
int printf (const char* format, ... );
Run Code Online (Sandbox Code Playgroud)
这是printf的签名.我不明白的是,printf如何知道第一个参数的长度(the const char* format).
它知道开始(因为它是一个指针,我得到它),但指针没有结束或什么.通常当你想要打印一些东西时你必须给出一个长度(例如,Linux sys_write),那么printf如何知道呢?
编辑:
我一直在查看我在ASM中编写的代码,我认为它只是寻找一个\0字符.那是对的吗?
Thi*_*ter 11
它是一个以null结尾的字符串(与C中的所有字符串一样),因此第一个ASCII NUL('\0'或普通0)字节表示字符串的结尾.
如果你"meow"在C中有一个字符串,它实际上使用5个字节的内存,在内存中看起来像这样.的\0明显是一个值为0的单个字节.
meow\0
Run Code Online (Sandbox Code Playgroud)
如果你想知道如何表示实际'0'数字:数字0..9的ASCII值为48..57,所以在第三个位置"me0w"有48字节.
| 归档时间: |
|
| 查看次数: |
585 次 |
| 最近记录: |