C中的argc和argv

时间:2018-10-16 10:41:51

标签: c argv argc

假设我有这个示例功能

int main(int argc, char** argv) {

        char* pChar = argv[2]; // Get the second argument "Word"
        char * pAdd = pChar + strlen(pChar); // 0 + 5
}

并通过输入 ./ fileName Hello World

运行

由于argv [2] = World,因此pChar应该指向Char“世界”的内存地址

但是,我不明白为什么执行 pChar + strlen(pChar)行代码时pChar = 0(这就是书中所说的)。

2 个答案:

答案 0 :(得分:2)

pChar不是0

可能的错误:*pAdd指向字符串{{的最后一个字符,因此pChar 0 而不是pAdd。 1}},即"World",空终止符('\0')的整数值为 0

您想说的地址是 0 -您可能需要阅读以下内容:

in c can an address of a pointer be 0

答案 1 :(得分:1)

您需要解释或演示如何进行观察。 pChar不会为零,但是它将指向第二个参数末尾的NUL 字符。即*pChar将为NUL-由pAdd指向的空字符串在此处进行演示:

enter image description here

结果是,使用调试器进行观察-这是侵入性最小的方法,并且不依赖于您正确编写 debug代码