指針什么時(shí)候能改變實(shí)參的值 形參不能改變實(shí)參,為什么在用指針傳遞數(shù)值的時(shí)候又可以改變呢?
形參不能改變實(shí)參,為什么在用指針傳遞數(shù)值的時(shí)候又可以改變呢?事實(shí)上,一個(gè)形式參數(shù)在傳遞一個(gè)實(shí)際參數(shù)給一個(gè)子函數(shù)時(shí)定義了一個(gè)新的變量,但是這個(gè)變量的值等于實(shí)際參數(shù)所以不管你在子函數(shù)中如何修改它,調(diào)用它的
形參不能改變實(shí)參,為什么在用指針傳遞數(shù)值的時(shí)候又可以改變呢?
事實(shí)上,一個(gè)形式參數(shù)在傳遞一個(gè)實(shí)際參數(shù)給一個(gè)子函數(shù)時(shí)定義了一個(gè)新的變量,但是這個(gè)變量的值等于實(shí)際參數(shù)
所以不管你在子函數(shù)中如何修改它,調(diào)用它的函數(shù)的實(shí)際參數(shù)的值將不受影響
當(dāng)使用指針作為參數(shù)時(shí),因?yàn)槲覀儌鬟f的不是值本身,而是相應(yīng)的地址。更改值時(shí),我們會更改該地址中的值,因此可以通過傳遞指針來更改值
如果要修改在子函數(shù)中調(diào)用它的函數(shù)的值,可以使用引用函數(shù)
例如
#include<stdio。H>
void fun(int&x)
x=x1
void Main()
{
int a=5
fun(a)
printf(%d,a)
}]是在參數(shù)前加一個(gè)&
確切地說,就是修改實(shí)際參數(shù)的地址來改變實(shí)際參數(shù)的值。指針傳遞地址,因此可以更改。函數(shù)的形式參數(shù)接受和指針變量。如果傳遞地址,則不必直接從指針獲取變量的地址