#include <stdio.h>
int main()
{
int i,j=;
int k=;
i=max(j,k);
printf("i=%d\n",i);
return ;
} int max(int a,int b)
{
int c;
c=a>b ? a:b;
return c;
}

实参和形参:

事实上,实参和形参被分配到内存的不同单元。

实参对形参是单向的”值传递“,形参若在函数中值改变不影响实参的值。

函数调用完毕之后,形参那部分内存单位被收回。

--------------------------------

c语言中 函数是不可以重名的。(c++与java是可以的,根据返回类型不同而不同)

函数体内的变量与与参数也是不可以重名的。

函数可以返回一个指针但不可以返回一个数组

例二:10!

#include <stdio.h>
int main()
{
int i;
float f=;
for(i=;i<=;i++)
f=f*i;
printf("10!=%10.0f\n",f); return ;
}

奇怪,c-free软件,函数要在调用函数的前面。也就是函数要在main函数前面出现

#include <stdio.h>
float fac(int n)
{
float f;
if(n==||n==) f= ;
else f=n*fac(n-);
return f;
} int main()
{
float f;
f=fac();
printf("10!=%10.0f\n",f);
return ;
}

例三:动态变量与静态变量

#include <stdio.h>

void function()
{
static int a=;
int b=;
a++;
b++;
printf("a=%d,b=%d\n",a,b);
} int main()
{
function();
function();
function();
return ;
}

例四:使用extern关键字提前声明全局变量

#include <stdio.h>

int max(int a,int b)
{
return a>b?a:b; }
int main()
{
extern i,j;
printf("%d\n",max(i,j));
}
int i=-,j=-;

例五:指针作为函数的参数

#include <stdio.h>
void change(int i,int *p)
{
i++;
if(p !=NULL)
(*p)++;
}
int main()
{
int a=,b=;
change(a,&b);
printf("a=%d b=%d\n",a,b);
return ;
}

指针直接改变了实参的值。局部变量是不可以改变

例六:返回指针的函数

#include <stdio.h>

char *name[]={ "Monday","Tuesday","Wednesday","Thursday",
"Friday","Saturday","Sunday" };
char *message= "wrong input"; char *week(int day)
{
if(day<||day>)
return message;
else
return name[day-];
} int main()
{
int day;
char *p;
printf("input a number of a week:\n ");
scanf("%d",&day);
p=week(day);
printf("%s\n",p);
return ;
}

例七:为什么要使用指针

#include <stdio.h>
void swap(int a,int b)
{
int tmp;
tmp=a;
a=b;
b=tmp;
}
main()
{
int a=,b=;
swap(,);
printf("%d\t%d\n",a,b);
return ;
}

不使用指针不能改变 主函数 a,b的值

#include <stdio.h>
void swap(int *a,int *b)
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
} main()
{
int a=,b=;
swap(&a,&b);
printf("%d\t%d\n",a,b);
return ;
}

例八:字符串长度(虽然函数库里面有strlen函数,一个例子还是不错的)

两个length作用域是如何区别的呢

#include <stdlib.h>
#include <stdio.h> int strlen_1(char *string)
{
int length=;
while( *string++ !='\0')
length +=; return length; }
int main()
{
int length; length=strlen_1("abcdef");
printf("%d\n",length); return ;
}

用函数库里面的

#include <stdlib.h>
#include <stdio.h> int main()
{
printf("%d\n", strlen("abcdef"));
return ;
}

例九:指针的长度 。一般32位的都是4字节

#include <stdio.h>
int main()
{
int *p;
char *p2;
printf("%d\n", strlen("abcdef"));
printf("%d\n", sizeof("abcdef"));
printf("%d\n", sizeof(p));
printf("%d\n", sizeof(p2));
return ;
}

最新文章

  1. poj 1990 MooFest
  2. linux od命令: 按不同进制显示文件
  3. JMS开发(二):深入PTP,Pub-Sub两种模式
  4. PKCS#12
  5. C#高效导出Excel(IList转DataTable,DataSet)
  6. list根据所存对象属性排序
  7. tensorflow的Virtualenv安装方式安装
  8. 【WCF系列】(二)设计和实现服务协定
  9. android4.2添加重启菜单项
  10. H5 新特性之 fileReader 实现本地图片视频资源的预览
  11. 你的知识需要管理PKM
  12. U-Mail企业邮箱如何导入授权文件
  13. Automatically migrating data to new machines kafka集群扩充迁移topic
  14. [poj P1141] Brackets Sequence
  15. Spring MVC和Spring Boot的理解以及比较
  16. bzoj1798
  17. sublime text3在交互时解决input()函数无法使用的问题
  18. Filter实现session超时自动跳转到login页,超过试用期不许登录
  19. 05.odoo12开源框架学习
  20. 对象池3(方法功能)PoolManager(控制)PoolTimeObject(时间管理)text01(调用)Destorys(销毁)

热门文章

  1. 静态Web开发 JavaScript
  2. java语言实现简单接口工具--粗简版
  3. sys.argv[]基本用法
  4. extern &quot;C&quot;的用法解析(转)
  5. vector(相对线程安全) arryList(线程不安全)
  6. shark错误:Query returned non-zero code: -101
  7. python 使用模块
  8. [Objective-c 基础 - 2.10] description方法
  9. 转载最佳JQuery学习网站
  10. RocketMQ入门(2)最佳实践