这个程序的输出结果没有看懂欸
#include<stdio.h>int *f(int *s)
{
s+=1;
s+=6;
*s++ +=7;
return s;}
void main()
{
int a={1,2,3,4,5},*p;
p=f(&a);
printf("%d,%d,%d,%d",a,a,*p,p);
}
子函数不是很理解,可以详细地讲讲吗??谢谢各位啦 没明白你说什么 #include<stdio.h>
int * f(int * s)
{
s += 1 ; // s 本来指向 a,加 1 后,指向 a。
s += 6 ; // s 实际上等效于 * = * + 6,也就是 a = a + 6 = 4 + 6 = 10
* s ++ += 7 ; // s 指向 a,此句等效于 a = a + 7 = 3 + 7 = 10,然后 s 指向 a
return s ; // 返回 s 指向 a
}
int main(void)
{
int a = {1 , 2 , 3 , 4 , 5} , * p ;
p = f (& a) ; // 函数参数指向 a,返回 p 指向 a
printf("%d , %d , %d , %d" , a , a , * p , p) ; // a = 2,a = 10,* p = a = 10,p = a = 5
}
#include<stdio.h>
int *f(int *s)
{
s+=1;//s=&a s=a
s+=6;//a=a+6=10
*s++ +=7;//s=&a=a+7=10 这里好像是s地址先加一 然后s+=7吧
return s;//s=a=4=p so p=a=5
}
int main()
{
int a={1,2,3,4,5},*p;
p=f(&a);
printf("%d,%d,%d,%d",a,a,*p,p);
}
不太确定 如果不对 请大佬指正 jackz007 发表于 2019-3-20 23:22
S最开始不是指向a吗?{:5_94:} My_A 发表于 2019-3-21 00:56
S最开始不是指向a吗?
传入的实参是&a1 本帖最后由 jackz007 于 2019-3-21 09:53 编辑
My_A 发表于 2019-3-21 00:56
S最开始不是指向a吗?
p = f (& a);// & a 是传给 f() 的参数,就是指向 a 的指针
在 f() 中,只要清楚地知道指针 s 的指向,看懂代码就不是难事了。
jackz007 发表于 2019-3-20 23:22
大佬说得很清楚啦{:10_327:} jackz007 发表于 2019-3-21 09:49
p = f (& a);// & a 是传给 f() 的参数,就是指向 a 的指针
在 f() 中,只 ...
哦哦 , 抱歉没注意 谢谢大佬!!!{:5_106:}
页:
[1]