关于argc argv和env的困惑

-1 c++ environment argv

我只是不知道如何准确地解释我的问题.所以我在上面写了这个标题.

这是我对一个非常简单的程序的困惑.确切地说,结果.

#include <iostream>
using namespace std;

char * tmp[]={"aaa", "bbb", "ccc"};//there are 3 members

int main(int argc, char* argv[], char* env[])
{
    cout << sizeof(env)/sizeof(char*) << endl;
    cout << sizeof(tmp)/sizeof(char*) << endl;
}
Run Code Online (Sandbox Code Playgroud)

结果:1 3

我想要的是env []的长度.怎么可能我得到了env []的第1个,而'tmp'(3)的长度是绝对严格的.

env的长度不可能是1,因为我测试了它,数字是47.

为什么会这样?谢谢!

M.M*_*M.M 5

区别在于它tmp是一个数组,而是env一个指针.数组和指针是不同的.这有点令人困惑,因为函数形式参数列表中的数组语法实际上是伪装的指针.

无法通过env使用获取指向的元素数量sizeof.你必须经历它们,直到找到NULL终止列表的元素.