c语言实例

#include <stdio.h>
int main()
{
 int i,j=10;
 int k=15;
 i=max(j,k);
 printf("i=%d
",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
",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
",f);
    return 0;
}

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

#include <stdio.h>

void function()
{
    static int a=0;
    int b=0;
    a++;
    b++;
    printf("a=%d,b=%d
",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
",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
",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:
 ");
   scanf("%d",&day);
   p=week(day);
   printf("%s
",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	%d
",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	%d
",a,b);    
    return 0;
}

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

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

#include <stdlib.h>
#include <stdio.h>

int strlen_1(char *string)
{
    int length=0;
    while( *string++ !='')
    length +=1;
    
    return length;
    
    
}
int main()
{
    int length;

length=strlen_1("abcdef");
    printf("%d
",length);

    
    return 0;
}

 用函数库里面的

#include <stdlib.h>
#include <stdio.h>

int main()
{
    printf("%d
", strlen("abcdef"));    
    return 0;
}

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

#include <stdio.h>
int main()
{
    int *p;
    char *p2;
    printf("%d
", strlen("abcdef"));    
    printf("%d
", sizeof("abcdef"));    
    printf("%d
", sizeof(p));    
    printf("%d
", sizeof(p2));    
    return 0;
}
原文地址:https://www.cnblogs.com/bluewelkin/p/4056847.html