形参,实参:
形参就是
比如void dfs(int x,int fa) x 和 fa 就是形参
实参就是:
int main()
{
int a,b; a和b就是实参,全局变量也是
}
形参:
调用函数时,形参会被分配一个新的内存空间,实参的值就会被“复制”进去,
让它在被调函数中参与运算。而实参本身不参与这个运算,它仅仅起到一个传递值的作用(不过在C++中可以用&改变实参的值)。
如果参数的形式是指针,那么“复制”的就是地址。
传值调用的形参只有在被调用时才被创建(分配存储单元)。
实参:实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。
重点:形参和实参虽然可以同名,但它们之间是相互独立的,互不影响,因为实参在函数外部有效,而形参在函数内部有效。
scanf:
/*
scanf第二个参数需要返回一个地址
即scanf 第二个参数 是地址
*/
地址与内容
/*
* + 地址=内容
* 称之为取间访
*/
一维数组:
/*
int a[6]; 下标表示 (0~5)
数组名为指向首地址的指针:比如 a 就是 a[0]的地址,
a+i (i称为偏移量) 就是a[i]的地址
*a取了间访,为第一个元素的内容,*a+i 是 a[i]元素的值
输入是有两种方法
1.for(int i=0;i<6;i++) scanf("%d",&a[i]); 2.for(int i=0;i<6;i++) scanf("%d",a+i);
*/
二维数组:
/*
二维数组需要通过两次间接引用才能取到对应的元素。
int a[3][4]
**(a+2) 相当于*(*(a+2) +0),对应下标为a[2][0],为第 3 行第 1 列的元素( 不是第 2 行第 0 列元素 )
*(*a+2) 相当于*(*(a+0)+2),对应下标为a[0][2],为第1行第3列的元素
a[3][1] 为第4行第2列的元素
*(a[3]+1)相当于a[3][1],为第4行第2列的元素
关于二维数组地址的加减 : 重点理解每行3个,下下面的图也能为此说明
二维数组中,行下标界可以省,列下标界不能省。原因是二维数组是按照行进行保存的,要正确取出某一行,需要知道该行中有几个元素(即共有几列)
(6条消息) 定义二维数组时,为什么二维数组行可省列不可省_晓龙coding的博客-CSDN博客
*/
细琐/小知识点:
'\0'为空字符,是字符类型数组初始化时放入的默认值
标签:知识点,形参,int,二维,C语言,地址,数组,大一,实参 From: https://www.cnblogs.com/Willette/p/17073972.html