深入理解形参的重要性
2013-10-31 14:11
337 查看
/*
#include "string.h"
#include <stdio.h>
#include <stdlib.h>
void getmemory(char **p) //函数的参数是局部变量,在这里给它分配内存还在,但是P释放了。
{
*p=(char *) malloc(100);
(*p)[0]='a';
(*p)[1]='\0';
}
int main( )
{
char a[10]="eee";
char *str=a;
getmemory(&str);//传的 是指针的副本
//strcpy(str,"hello world");
printf("%s\n",str);
// free(str);
return 0;
}
//要改变的是指针的指向,1 要传指针的指针。*/
#include "string.h"
#include <stdio.h>
#include <stdlib.h>
void getmemory(char *&p) //函数的参数是局部变量,在这里给它分配内存还在,但是P释放了。
{
p=(char *) malloc(100);
(p)[0]='a';
(p)[1]='\0';
}
int main( )
{
char a[10]="eee";
char *str=a;
getmemory(str);//传的 是指针的副本
//strcpy(str,"hello world");
printf("%s\n",str);
// free(str);
return 0;
}
//要改变的是指针的指向,2 要传指针引用。
/*第三种方法-----引用调用参数传递 */
// add中,形参c是引用类型变量,实质上c就是main中的sum的一个别名
// add中修改c的值,就是修改了main中的sum的值
// return 调用执行得是否ok
#include <stdio.h>
#define OK 1
typedef int status;
/*
status add(int a,int b,int c);
main()
{
int a=2,b=3,sum=0;
add(a,b,sum);
printf("%d\n",sum);
}
status add(int a,int b,int c)
{
c=a+b;
return OK;
}
//传变量,只是传一个副本,不能改变变量的原来的值,
*/
/*
status add(int a,int b,int &c);
main()
{
int a=2,b=3,sum=0;
add(a,b,sum);
printf("%d\n",sum);
}
status add(int a,int b,int &c)
{
c=a+b;
return OK;
}
////传变量的引用是变量本身,能改变变量的原来的值*/
/*
status add(int a,int b,int *c);
main()
{
int a=2,b=3,sum=0;
add(a,b,&sum);
printf("%d\n",sum);
}
status add(int a,int b,int *c)
{
*c=a+b;
return OK;
}
//传变量的地址能改变变量的原来的值。==可以和引用互相替换*/
/*
status add(int a,int b,int *c);
main()
{
int a=2,b=3,sum=0;
add(a,b,&sum);
printf("%d\n",sum);
}
status add(int a,int b,int *c)
{
// *c=a+b;
int d=6;
c=&d;
return OK;
}
//传变量的地址能改变变量的原来的值。==可以和引用互相替换*/
阅读(319) | 评论(0) | 转发(0) |
0
上一篇:在LINUX坏境下printf输出字体的特效
下一篇:C语言面试经常遇到的题
相关热门文章
超适用纵贯车推广技能_淘富阁...
让量子统计东西助力店肆推广_...
MySQL优化实例
procfs(从0开始,内核态和用...
字节对齐1
test123
编写安全代码——小心有符号数...
使用openssl api进行加密解密...
一段自己打印自己的c程序...
sql relay的c++接口
ChinaUnix & ITPUB社区12周年...
ssh连接出现以下提示,求解...
如何扩展MYSQL
准备做一个大型门户,用户什么...
gbk or utf8
给主人留下些什么吧!~~
评论热议
#include "string.h"
#include <stdio.h>
#include <stdlib.h>
void getmemory(char **p) //函数的参数是局部变量,在这里给它分配内存还在,但是P释放了。
{
*p=(char *) malloc(100);
(*p)[0]='a';
(*p)[1]='\0';
}
int main( )
{
char a[10]="eee";
char *str=a;
getmemory(&str);//传的 是指针的副本
//strcpy(str,"hello world");
printf("%s\n",str);
// free(str);
return 0;
}
//要改变的是指针的指向,1 要传指针的指针。*/
#include "string.h"
#include <stdio.h>
#include <stdlib.h>
void getmemory(char *&p) //函数的参数是局部变量,在这里给它分配内存还在,但是P释放了。
{
p=(char *) malloc(100);
(p)[0]='a';
(p)[1]='\0';
}
int main( )
{
char a[10]="eee";
char *str=a;
getmemory(str);//传的 是指针的副本
//strcpy(str,"hello world");
printf("%s\n",str);
// free(str);
return 0;
}
//要改变的是指针的指向,2 要传指针引用。
/*第三种方法-----引用调用参数传递 */
// add中,形参c是引用类型变量,实质上c就是main中的sum的一个别名
// add中修改c的值,就是修改了main中的sum的值
// return 调用执行得是否ok
#include <stdio.h>
#define OK 1
typedef int status;
/*
status add(int a,int b,int c);
main()
{
int a=2,b=3,sum=0;
add(a,b,sum);
printf("%d\n",sum);
}
status add(int a,int b,int c)
{
c=a+b;
return OK;
}
//传变量,只是传一个副本,不能改变变量的原来的值,
*/
/*
status add(int a,int b,int &c);
main()
{
int a=2,b=3,sum=0;
add(a,b,sum);
printf("%d\n",sum);
}
status add(int a,int b,int &c)
{
c=a+b;
return OK;
}
////传变量的引用是变量本身,能改变变量的原来的值*/
/*
status add(int a,int b,int *c);
main()
{
int a=2,b=3,sum=0;
add(a,b,&sum);
printf("%d\n",sum);
}
status add(int a,int b,int *c)
{
*c=a+b;
return OK;
}
//传变量的地址能改变变量的原来的值。==可以和引用互相替换*/
/*
status add(int a,int b,int *c);
main()
{
int a=2,b=3,sum=0;
add(a,b,&sum);
printf("%d\n",sum);
}
status add(int a,int b,int *c)
{
// *c=a+b;
int d=6;
c=&d;
return OK;
}
//传变量的地址能改变变量的原来的值。==可以和引用互相替换*/
阅读(319) | 评论(0) | 转发(0) |
0
上一篇:在LINUX坏境下printf输出字体的特效
下一篇:C语言面试经常遇到的题
相关热门文章
超适用纵贯车推广技能_淘富阁...
让量子统计东西助力店肆推广_...
MySQL优化实例
procfs(从0开始,内核态和用...
字节对齐1
test123
编写安全代码——小心有符号数...
使用openssl api进行加密解密...
一段自己打印自己的c程序...
sql relay的c++接口
ChinaUnix & ITPUB社区12周年...
ssh连接出现以下提示,求解...
如何扩展MYSQL
准备做一个大型门户,用户什么...
gbk or utf8
给主人留下些什么吧!~~
评论热议
相关文章推荐
- 对const关键字的理解
- 如何在Linux上面安装GCC 4.1.2
- 查看WEB服务器当前连接数
- Flex坐标
- 节选【挨踢人物传】茶乡浪子王达
- Java虚拟机深入研究
- XCode调试技巧之EXC_BAD_ACCESS中BUG解决
- Calendar.set用法的深入探讨
- C二维数组作为函数参数需在内部指明列数
- win7无法访问局域网win2003系统共享的文件的解决方法
- 条码扫描二维码扫描——ZXing android 源码简化
- 传奇源码分析---框架
- JQuery UI - resizable
- 转 Google免费的SVN服务器管理VS2010代码 - aehyok - 博客园
- linux中 likely与unlikely
- javascript 实现动画
- 大小端字节序问题
- phpmyadmin配置方式
- 111
- 基于s5pv210嵌入式linux系统sqlite3数据库移植