标签: local-variables

在 C 中函数执行完成后,函数的本地数组是否仍然保留?

我已在函数内声明并初始化了一个(动态?)数组bool,如下面这个简单示例所示。我正在使用相同的函数来填充它。我不希望在函数执行完成后将数组保留在计算机内存中,以允许在将来的函数调用中使用正确的值重新填充数组。一旦函数调用返回,它会自动从内存中删除吗?如果没有,解决方法是什么?

bool correct_count(int start, int end)
{
    int numbers[] = {};

    for (int i = 0; i < (end - start + 1); i++)
    {
        numbers[i] = start + i;
    }

    if (numbers[0] == start && numbers[end - start] == end)
    {
        return true;
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

在这个简单的示例中,我们可以确定数组的大小,但我尝试编写的程序并非如此。另外,我还不允许在我的程序中使用与内存相关的运算符,例如解引用运算符或动态内存分配,因为这目前超出了我已经学到的范围。

c memory arrays function local-variables

-1
推荐指数
1
解决办法
143
查看次数

如何从字符串中提取多个数字并分配给各个变量

让我说我有字符串"first=53 second=65 third=82".我该如何分配给每个值的变量x,y,z

编辑:单词也必须匹配.带有+符号和确切的空格数.

ruby regex local-variables

-2
推荐指数
1
解决办法
44
查看次数

为什么C中局部变量的默认值相同?

#include <stdio.h>  
int main()
{
    int i,j=3;
    i=4+2*j/i-1;
    printf("%d",i);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它会每次打印9,虽然我没有初始化,所以,它必须打印任何垃圾值.请解释...

c local-variables

-3
推荐指数
1
解决办法
4282
查看次数

&符号bug和c的生命周期

众所周知,局部变量具有局部范围和寿命.请考虑以下代码:

      int* abc()
      {
            int m;
            return(&m);
       }
       void main()
       {
             int* p=abc();
             *p=32;
        }
Run Code Online (Sandbox Code Playgroud)

这给了我一个函数返回局部变量地址的警告.我认为这是理由:一旦abc()完成,就会释放本地可验证的m.所以我们在主函数中解除引用无效的内存位置.

但是,请考虑以下代码:

      int* abc()
      {
           int m;
           return(&m);
           int p=9;
       }
       void main()
       {
           int* p=abc();
           *p=32;
       }
Run Code Online (Sandbox Code Playgroud)

我在这里得到同样的警告.但我想m返回时仍会保留其生命周期.怎么了?请解释错误.我的理由是错的吗?

c pointers local-variables compiler-warnings

-4
推荐指数
2
解决办法
255
查看次数

修复C#中的代码

我有以下C#代码:

double eps=0.1, low=1, y0=0, x, y, high, muchlat, answer, ribua;
Console.WriteLine("Enter x");
x = double.Parse(Console.ReadLine());
high = y = x;
muchlat = Math.Abs(y - y0) ;
if (x < 0)
{
    Console.WriteLine("X can't be less than zero, press any key to exit");

}
else if (muchlat > eps)
{

    while  (muchlat > eps)
    {
        Console.WriteLine(y);
        y0 = y;
        y = (high + low) /2;
        ribua = Math.Pow(y,2);
        if (ribua == x)
        {
            answer = x;
        }
        else if (ribua …
Run Code Online (Sandbox Code Playgroud)

c# variables local-variables

-11
推荐指数
1
解决办法
226
查看次数