抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

题外话

今天开始军训了,晚上也有安排,回到宿舍差不多九点半了。

少了好多时间刷题和学习。

今天的内容实际是在等教官来时用手机看的。

没有接上昨天的内容,因为不能做笔记。

本来今天内容可以把函数基本知识全写完的,命名参数啊什么的。

宿舍弄回来一个洗衣机,进水口接的水龙头炸了,只能手动加水,来来回回跑了四五趟。

明天又要六点半起床,今天就先到这里吧。

正文

函数

函数声明

void foo();

创建一个函数声明(Microsoft Learn里叫做方法签名)。

无参数无返回值函数

1
2
3
4
void SayHello() 
{
// do something...
}

这就是函数定义,看上去跟C一样。

void表示无返回值。

intstring,double等都可与void替换,表示返回值的类型。

调用一个方法只需要直接输入就行了。

SayHello();

貌似使用大驼峰命名法。

有参数无返回值函数

1
2
3
4
void SaySomething(string message)
{
// do something...
}

在圆括号内指出形参的类型和名字。

按值传递和按引用传递的参数
  • 将参数传递给某个方法时,值类型的变量会将其值复制到该方法中。 每个变量都有自己的值副本,因此不会修改原始变量。
  • 使用引用类型时,会将值的地址传递到该方法中。 向该方法提供的变量会引用该地址中的值,因此对该变量的操作会影响另一个变量引用的值。

一个赋值进去,一个是传地址进去。

传值很常见,就是函数里随便造,离开函数还是那个值。

传地址这里给了一个样例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int[] array = {1, 2, 3, 4, 5};

PrintArray(array);
Clear(array);
PrintArray(array);

void PrintArray(int[] array)
{
foreach (int a in array)
{
Console.Write($"{a} ");
}
}

void Clear(int[] array)
{
for (int i = 0; i < array.Length; i++)
{
array[i] = 0;
}
}

------
output:
1 2 3 4 5
0 0 0 0 0

注意到Clear()函数中对array的操作对Array的内容发生了修改。

并不是创建了一个新数组array,把Array赋值过去,再在新数组里面把所有数设为0.

这也印证了前面说的int[]实际是一个指针。

函数内的形参能覆盖掉同名的别的函数里的参数。

评论