实参和形参的数据传递方式有两种,
1)一种是值传递,实参和形参都不是指针,这种情况下函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
2)另一种是地址传递,就是实参与形参共用同一个内存单元,在函数执行的过程中,实际就是对实参的地址进行操作,因此形参改变,实参同步变化,实际他们就是同一变量,因为在内存中占据的就是一个内存单元。
例如指针作为形参时,实参s只是把地址传递给了形参p,在函数体内,p指针指向了下一个内存地址,因此原内存地址中的内容并未改变,p指针变量的如何变化与S无关,除非p指针改变了实参所指向位置的内存单元中的数值,那么访问实参所得值也会随之变化。
这个结果并不是2而是1.
然而将p换成*p的时候结果是2.
当我们将*s替换成s的时候,结果为零,因为我们在输出以后返回到零,即这个程序无运行结果,原因是%c指代的是单个字符,我们需要输出*p的值,然后在以下程序中,输出的是s是一个函数名。