#include "stdio.h"
int *f(int *s,int *t)
{
if(*s<*t)
{
s = t;
}
return s;
}
int main()
{
int i=3,j=5,*p=&i,*q=&j,*r;
r = (p,q);
printf("%d,%d,%d,%d,%d\n",i,j,*p,*q,*r);
}
這個程式運行完為什么*p的值是3,不應該是5么啊?求大佬解答,感激不盡
uj5u.com熱心網友回復:
p不是指向i嗎?不應該等于i嗎?你覺得哪句話改變了i或者p的值uj5u.com熱心網友回復:
這個你要先了解一下形參的定義。在 ini *f( int* s, int* t) 呼叫程序中,形參是一個臨時的實參的拷貝,
也就是說在這個函式內部的s,t,是呼叫者p,q的一個臨時拷貝,
所以你修改了這個拷貝的值,待到函式退出后,是不會影響到
呼叫者的實參的。如果你想改變這個呼叫者的實參,可以這樣寫
int *f(int **s, int **t)
{
if (**s < **t)
{
*s = *t;
}
return *s;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/27576.html
標籤:基礎類
