我写了一个包含数组作为参数的函数,并通过传递数组的值来调用它,如下所示.
void arraytest(int a[])
{
// changed the array a
a[0]=a[0]+a[1];
a[1]=a[0]-a[1];
a[0]=a[0]-a[1];
}
void main()
{
int arr[]={1,2};
printf("%d \t %d",arr[0],arr[1]);
arraytest(arr);
printf("\n After calling fun arr contains: %d\t %d",arr[0],arr[1]);
}
Run Code Online (Sandbox Code Playgroud)
我发现虽然我arraytest()通过传递值调用函数,但原始副本int arr[]已更改.
你能解释一下原因吗?
为什么我不能在C#中为浮点变量分配1.2值?我在C和C++中做了同样的事情,并且它起作用了.
class Program
{
private readonly int a = 20;
private readonly float b;
public Program(float tmp)
{
b = tmp;
}
static void Main(string[] args)
{
Program obj1 = new Program(1.2);
Console.Read();
}
}
Run Code Online (Sandbox Code Playgroud)
它给错误无法转移双倍浮动.为什么不是1.2浮动值?
我正在编写以下代码.
static void Main(string[] args)
{
FileInfo fiobj = new FileInfo(@"e:\mohan.txt");
Console.Write("Name of file:"+ fiobj.Name);
using(StreamWriter sw = fiobj.AppendText())
{
sw.WriteLine("mohan!");
}
}
// code not working
static void Main(string[] args)
{
FileInfo fiobj = new FileInfo(@"e:\mohan.txt");
Console.Write("Name of file:"+ fiobj.Name);
StreamWriter sw = fiobj.AppendText();
sw.WriteLine("mohan!");
}
Run Code Online (Sandbox Code Playgroud)
当我使用"using(){}"块时,我能够写入文件,但是当我在不使用(){}块的情况下编写相同的代码时,我无法做到.为什么这样?据我所知,using(){}块指定对象的生命周期范围.使用(){}阻止在这里执行某些操作以使其能够将数据写入文件.
每当我们调用函数返回值时,为什么不需要捕获值?考虑以下C代码,
int main()
{
int i;
scanf("%d",&i);
printf("Value of i is: ",i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这里scanf()返回值1,但因为它没有在任何地方捕获,为什么没有弹出错误?允许这样编程的原因是什么?
我对C#程序的执行方式感到有点困惑.到目前为止我学到的是,
所以我的问题是为什么我们需要.NET Framework中的基类,因为所需的基类已经转换为MSIL代码?
我上面的过程错了吗?请帮忙!我用谷歌搜索但是无法清除它.谢谢您的关注!