函数参数调用指针、结构体
2017-02-23 15:41
197 查看
一、函数调用指针时
void main(void)
{
int a,int b;
a=5;
b=3;
fun(&a,&b);
}
void fun(*p1,*p2)
{
int c;
c=*p1;
*p1=*p2;
*p2=c;
}
1、此时函数声明参数是两个指针,因此主函数中函数的调用参数应该输入两个指针,就是a,b的地址。
2、再次强调,需要改变输入参数的值时函数才需要调用该指针,就是说fun(x,y) fun(结构1),需要改变调用参数的值时,该参数采用指针表示(此处指想要改变的是普通变量,而不是改变指针变量)
二、函数调用结构体
1、结构体、实例、指向结构的指针
结构体的实例相当于一个变量,让指针指向该结构体的实例时可以这么写
sturct stu{
char names;
};
sturct stu *p1; 申明了指向该结构的指针p1,但是该指针并未初始化,还不能使用
struct stu s1;
p1=&s1; 创建了实例后就可以让指针指向实例了
或者
struct stu{
char name;
};
struct stu *p1;
p1=(stu*)malloc(sizeof(struct stu)); 此处给指针分配空间,最后记得free
2、函数调用
定义时
void fun(stu *p1,stu p2)
main中 stu s1,s2; 创建两个实例
调用时fun(&s1,s2)
这里有个重点,为啥同样是实例,两个申明时一个是申明指针,一个就是申明实例呢?答案和本文第一部分函数调用指针参数一样,只有在想改变参数的值时才将参数设为指针类型,否则就是本来的类型。比如实例s1,我的函数f1想要在s1中插入值,就更改了s1,就要申明f1(*s1);我的函数f2想要把s1中的值读出来,不更改s2,就不需要指针作为参数,就是f2(s1).
void main(void)
{
int a,int b;
a=5;
b=3;
fun(&a,&b);
}
void fun(*p1,*p2)
{
int c;
c=*p1;
*p1=*p2;
*p2=c;
}
1、此时函数声明参数是两个指针,因此主函数中函数的调用参数应该输入两个指针,就是a,b的地址。
2、再次强调,需要改变输入参数的值时函数才需要调用该指针,就是说fun(x,y) fun(结构1),需要改变调用参数的值时,该参数采用指针表示(此处指想要改变的是普通变量,而不是改变指针变量)
二、函数调用结构体
1、结构体、实例、指向结构的指针
结构体的实例相当于一个变量,让指针指向该结构体的实例时可以这么写
sturct stu{
char names;
};
sturct stu *p1; 申明了指向该结构的指针p1,但是该指针并未初始化,还不能使用
struct stu s1;
p1=&s1; 创建了实例后就可以让指针指向实例了
或者
struct stu{
char name;
};
struct stu *p1;
p1=(stu*)malloc(sizeof(struct stu)); 此处给指针分配空间,最后记得free
2、函数调用
定义时
void fun(stu *p1,stu p2)
main中 stu s1,s2; 创建两个实例
调用时fun(&s1,s2)
这里有个重点,为啥同样是实例,两个申明时一个是申明指针,一个就是申明实例呢?答案和本文第一部分函数调用指针参数一样,只有在想改变参数的值时才将参数设为指针类型,否则就是本来的类型。比如实例s1,我的函数f1想要在s1中插入值,就更改了s1,就要申明f1(*s1);我的函数f2想要把s1中的值读出来,不更改s2,就不需要指针作为参数,就是f2(s1).
相关文章推荐
- C#中调用C++的dll的参数为指针类型的导出函数(包括二级指针的情况)
- 函数的结构体指针参数传递的问题 都忘完了
- 用指向结构体的指针做函数参数
- java调用c dll,指针参数和结构体参数搞定
- c语言 第三讲 函数指针和结构体结合调用
- 结构体指针与结构体名做函数参数对比
- 函数用参数为 结构体指针 在VC下出现的问题
- C语言用结构体指针作函数参数
- error C3867: “A::fun1”: 函数调用缺少参数列表;请使用“&A::fun1”创建指向成员的指针
- 以指针或reference为参数的C++函数定义与调用对照表
- C语言用结构体指针作函数参数
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析 .
- C语言函数调用时参数压栈的顺序以及函数指针的作用
- C#中调用C++的dll的参数为指针类型的导出函数(包括二级指针的情况)
- 函数用参数为 结构体指针 在VC下出现的问题
- C#调用参数为函数指针的API函数 - 以SetUnhandledExceptionFilter为例编写一个全局异常处理程序
- JNI调用c++函数,该函数的参数是结构体(——对象的传递)
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析
- 结构体变量指针作为函数参数
- “Caculate::writehtml”: 函数调用缺少参数列表;请使用“&Caculate::writehtml”创建指向成员的指针