c语言中的实参与形参

来源:百度知道 编辑:UC知道 时间:2024/05/20 15:57:48
今天做C语言二级题目是碰到这样一个题:
point(char *p) {p+=3;}
main()
{ char b[4]={'a','b','c','d'},*p=b;
point(p);
printf("%c\n",*p);
}
运行后的输出结果是
A)a B)b C)c D)d

答案解释如下:
函数pointf(char *p)不能改变传递给point的实参的值,也就是说在main中调用point函数的前后,指针p所指的数据元素均未改变,所以,*p的值仍然为字符'a'

麻烦高手具体解释一下形参和实参,最好能举例说明这道题如果要将p所指的元素改变,应该如何修改程序。

子函数point(char *p) {p+=3;} 定义时,这里的p就是形参,起传递参数的作用,没有具体值,但是它不能改变主程序中的p。

主程序中调用语句point(p);中的p是实参,因为它有具体的值。

形参通过引用可以改变主程序中实参的值,运行一下下面的程序,看出什么结果。(子函数的形参前多了一个&)

#include<stdio.h>

void point(char*& p) {p+=3;}

void main()
{
char b[4]={'a','b','c','d'}, *p=b;

point(p);

printf("%c\n", *p);
}

在定义函数时函数名后面括号中的变量名称为形参;在主调函数中调用一个函数时,函数名后面括号中的参数称为实参

就是*p+=3就可以了

point(char *p)中的*p是个形参,虽然函数中有变,但是没有返回语句,函数值不返回,并不影响主函数中的实参*p的指针。

在定义函数时函数名后面括号中的变量名称为形参;在主调函数中调用一个函数时,函数名后面括号中的参数称为实参
函数point(char *p) {p+=3;} 定义时,这里的p就是形参,起传递参数的作用,没有具体值,但是它不能改变主程序中的p(形参和实参是两个相对应的变量,占有两个不同的存储空间,形参的值改变并不影响实参的值,两个是相互独立的。要想改形参里的值,必须采用传地址,即:将实参的地址传给形参,使形参和实参指向同一个值,这样改变形参,就等于改变了实参正如:
#include<stdio.h>
void point(char*& p) {p+=3;}
void main()
{
char b[4]={'a','b','c','d'}, *p=b;
poi