相关疑难解决方法(0)

在C++中重新声明变量是否需要花费任何成本?

为了便于阅读,我认为下面的第一个代码块更好.但第二个代码块是否更快?

第一块:

for (int i = 0; i < 5000; i++){
    int number = rand() % 10000 + 1;
    string fizzBuzz = GetStringFromFizzBuzzLogic(number);
}
Run Code Online (Sandbox Code Playgroud)

第二块:

int number;
string fizzBuzz;
for (int i = 0; i < 5000; i++){
    number = rand() % 10000 + 1;
    fizzBuzz = GetStringFromFizzBuzzLogic(number);
}
Run Code Online (Sandbox Code Playgroud)

在C++中重新声明变量是否需要花费任何成本?

c++ performance declaration

8
推荐指数
2
解决办法
1151
查看次数

为什么在不同作用域中用相同名称声明的变量被分配了相同的内存地址?

我知道char[]看过这篇文章:在C中重新声明变量是在while循环中声明变量的范围。

通过学习有关在中创建简单Web服务器的教程C,我发现我必须手动清除responseData在下面的示例中分配的内存,否则,的内容将index.html被连续地追加到响应中,并且响应中包含来自index.html以下内容的重复内容:

while (1)
{
  int clientSocket = accept(serverSocket, NULL, NULL);
  char httpResponse[8000] = "HTTP/1.1 200 OK\r\n\n";
  FILE *htmlData = fopen("index.html", "r");
  char line[100];
  char responseData[8000];
  while(fgets(line, 100, htmlData) != 0)
  {
      strcat(responseData, line);
  }
  strcat(httpResponse, responseData);
  send(clientSocket, httpResponse, sizeof(httpResponse), 0);
  close(clientSocket);
}
Run Code Online (Sandbox Code Playgroud)

更正依据:

while (1)
{
  ...
  char responseData[8000];
  memset(responseData, 0, strlen(responseData));
  ...
}
Run Code Online (Sandbox Code Playgroud)

来自JavaScript,这令人惊讶。为什么我要声明一个变量并可以访问在相同名称的不同范围中声明的变量的内存内容?为什么不C只是在后台重置内存?

另外...为什么在不同作用域中声明的同名变量被分配相同的内存地址?

根据这个问题:交替声明的变量具有与 ISN情况相同的内存地址模式。但是,我发现这种情况确实可靠。

c

5
推荐指数
2
解决办法
294
查看次数

标签 统计

c ×1

c++ ×1

declaration ×1

performance ×1