我已在函数内声明并初始化了一个(动态?)数组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)
在这个简单的示例中,我们可以确定数组的大小,但我尝试编写的程序并非如此。另外,我还不允许在我的程序中使用与内存相关的运算符,例如解引用运算符或动态内存分配,因为这目前超出了我已经学到的范围。
让我说我有字符串"first=53 second=65 third=82".我该如何分配给每个值的变量x,y,z?
编辑:单词也必须匹配.带有+符号和确切的空格数.
#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,虽然我没有初始化,所以,它必须打印任何垃圾值.请解释...
众所周知,局部变量具有局部范围和寿命.请考虑以下代码:
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#代码:
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)