c语言实例
#include <stdio.h> int main() { int i,j=10; int k=15; i=max(j,k); printf("i=%d\n",i); return 0; } 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=1; for(i=1;i<=10;i++) f=f*i; printf("10!=%10.0f\n",f); return 0; }
奇怪,c-free软件,函数要在调用函数的前面。也就是函数要在main函数前面出现
#include <stdio.h> float fac(int n) { float f; if(n==0||n==1) f= 1; else f=n*fac(n-1); return f; } int main() { float f; f=fac(10); printf("10!=%10.0f\n",f); return 0; }
例三:动态变量与静态变量
#include <stdio.h> void function() { static int a=0; int b=0; a++; b++; printf("a=%d,b=%d\n",a,b); } int main() { function(); function(); function(); return 0; }
例四:使用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=-5,j=-2;
例五:指针作为函数的参数
#include <stdio.h> void change(int i,int *p) { i++; if(p !=NULL) (*p)++; } int main() { int a=5,b=10; change(a,&b); printf("a=%d b=%d\n",a,b); return 0; }
指针直接改变了实参的值。局部变量是不可以改变
例六:返回指针的函数
#include <stdio.h> char *name[7]={ "Monday","Tuesday","Wednesday","Thursday", "Friday","Saturday","Sunday" }; char *message= "wrong input"; char *week(int day) { if(day<0||day>7) return message; else return name[day-1]; } 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 0; }
例七:为什么要使用指针
#include <stdio.h> void swap(int a,int b) { int tmp; tmp=a; a=b; b=tmp; } main() { int a=10,b=20; swap(10,20); printf("%d\t%d\n",a,b); return 0; }
不使用指针不能改变 主函数 a,b的值
#include <stdio.h> void swap(int *a,int *b) { int tmp; tmp=*a; *a=*b; *b=tmp; } main() { int a=10,b=20; swap(&a,&b); printf("%d\t%d\n",a,b); return 0; }
例八:字符串长度(虽然函数库里面有strlen函数,一个例子还是不错的)
两个length作用域是如何区别的呢
#include <stdlib.h> #include <stdio.h> int strlen_1(char *string) { int length=0; while( *string++ !='\0') length +=1; return length; } int main() { int length; length=strlen_1("abcdef"); printf("%d\n",length); return 0; }
用函数库里面的
#include <stdlib.h> #include <stdio.h> int main() { printf("%d\n", strlen("abcdef")); return 0; }
例九:指针的长度 。一般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 0; }