我最近开始尝试学习C编程语言.在我的第一个程序(简单的hello world事物)中,在我意识到我不能这样做之后,我遇到了声明字符串的不同方法variable_name = "string data":
char *variable_name = "data"
char variable_name[] = "data"
char variable_name[5] = "data"
Run Code Online (Sandbox Code Playgroud)
我不明白的是它们之间的区别.我知道它们是不同的,其中一个专门分配了一定数量的内存来存储数据,但这就是它,我觉得我需要在C中转移到更复杂的概念之前理解这一点.
此外,为什么使用*variable_name让我重新分配变量名到一个新的字符串,但variable_name[number]还是variable_name[]没有?当然,如果我给它分配10个字节(char variable_name[10] = "data")并尝试将其重新分配给10字节或更小的东西它应该工作,那么为什么不呢?
什么是空括号和星号?
我最近开始学习C++,我有点困惑argv和argc.我试图通过检查大小来确定参数是否传递给程序argc,但不管有多少参数(包括没有)我传递给程序,它的大小总是如此4.
简单的例子:
int main(int argc, char** argv)
{
std::cout << sizeof(argc); //outputs 4 with 0 or any num of arguments
std::cout << sizeof(argv); //outputs 8 with 0 or any num of arguments
}
Run Code Online (Sandbox Code Playgroud)
我之前发现了同样的问题,我为重复它而道歉,但我发现的那些页面上的答案与这里发生的事情相矛盾.
那么,为什么argc总是4有没有其他方法来检查参数是否传递给main()?
如果它是相关的我正在使用g ++进行编译.