第一部分:指针数组和行指针
1.指针数组:
---- 指针数组定义的一般形式:
类型名  *指针数组名[常量表达式];
例如: int  *p[3];
**** 定义一个一维数组,该数组中含有3个元素。且这三个元素都是指针变量,且每个指针变量都指向类型为int的元素。
----二维数组和指针数组的关系:
例如:int  a[3][2],*p[3],i;
for(i=0;i<3;i++)  p[i]=a[i];
****如果上述语句成立说明该指针数组中的每个元素都指向了其对应的二维数组的对应行。
----指针数组对应二维数组引用: int a[3][2],*p[3],i,j;
a[i][j]      ----------------    p[i][j]
*(a[i]+j)    ----------------    *(p[i]+j)
由于:p[i]------------*(p+i) 
p[i][j]      ----------------    (*(p+i))[j]
*(p[i]+j)    ----------------    *(*(p+i)+j)
2.行指针
---- 一般定义形式:
类型名    (*行指针名)[常量表达式];
例如: int (*q)[2];
**** 定义了一个指针变量,该指针一次可以访问2个类型为int的元素。
----- 二维数组和行指针的关系:
int  a[3][2],(*q)[2];
q=a;
----- 行指针来引用二维数组:
a[i][j]-----------------------------q[i][j]
*(a[i]+j)---------------------------*(q[i]+j)
(*(a+i))[j]-------------------------(*(q+i))[j]
*(*(a+i)+j)-------------------------*(*(q+i)+j)
---------------------------------------------------------->>>
---C语言是一种结构化的程序设计语句。
---C中提供了模块化的设计思想,而模块化的体现是通过"函数"
---C语言是一种函数式的设计语句,在C中没有子程序的概念只有函数的思想,因此C语言的基本单位是"函数"
---程序总是主函数左边的括号开始执行到右边的花括号结束。
---C程序是由若干个函数构成,但主函数只能唯一。
---分类:
库函数:
自定义函数:
第二部分:库函数
---库函数的一般调用形式:
库函数的函数名(参数);-----函数调用语句
例如: printf("a=%d\n",a);
putchar(ch);
y=sqrt(a);
-
-- 库函数在程序中体现形式:
(1)作为独立语句
putchar(ch);       
(2)以表达式语句出现。
y=sqrt(a)+b;
----文件包含:
*** 必须以#include 开头
*** 其后跟着是头文件。
*** 头文件必须放在<>或 ""
*** C中头文件的后缀名一般为.h,当不是所有的头文件都是.h
---看看几个常用的库函数及对应的头文件:
(1)输入和输出函数              #include <stdio.h>
printf  getchar  puts    .... 
(2)数学函数                    #include <math.h>
fabs    sqrt    pow  sin  cos  log  exp ....
(3)字符函数                    #include  <ctype.h>
isdigit  isalpha   
(4)字符串函数                  #include  <string.h>
strcpy
strcat    strlen    strcmp ....
(5)动态分配和随机函数
calloc    malloc   
rand
第三部分:自定义函数
1.自定义函数定义的一般形式:
函数的返回值类型  函数名(类型名1 形式参数1,......)
// 自定义函数的首部
{  定义说明部分;
执行部分;
}
**** 花括号中的部分叫做该自定义函数的函数体。
例如:
fun(double a,int double)
{ double c;
c=a+b;
return c;
}
*** int        ---------- 返回值类型
fun        ---------- 是自定义函数名,是用户自定义。
a、b      ---------- 形式参数(形参)
c          ---------- 临时变量 (在内存中占有一个临时的存储空间)
*** 函数不能嵌套定义(不能在一个函数中定义另一个函数),但可以嵌套调用。
**** 在自定义函数中除了形参外,用到的变量都要在定义说明部分进行定义说明。
**** 如果函数省略了函数的返回值类型,编译系统默认为int
#include <stdio.h>
int fun(int a,int b)
{int c;
c=a+b;
return c;
}
void main()
{ int x,y,s;
scanf("%d%d",&x,&y);
s=fun(x,y);
printf("s=%d\n",s);
}
**** x,y  : 实在参数(实参)
**** 在一个程序中,形参可以和实参同名,只要保证在同一个函数中唯一即可。
****  fun 是自定义函数名,是用户自定义。
****  在程序中自定义函数名要一致。
****  在程序中实参和形参要一一对应(类型、个数)
return 表达式;
return (表达式);
return ;
int fun(int a,int b)
{int c;
c=a+b;
return c;
}
**** return 语句所返回的值即是该函数所计算的最终结果。
**** 如果return返回值的类型和函数的返回值类型不一致,要以计算的结果为标准。(理论)
**** 在一个函数中可以有多个return语句,但只能执行其中一个。
例如:
#include <stdio.h>
int func(int k)
{  if(k%2==0) return 1;
return 0;
}
void main()
{ int a;
scanf("%d",&a);
if(func(a)) printf("%d 是偶数!\n",a);
else      printf("%d 是奇数!\n",a);
}
****如果自定义函数中没有return语句那么函数的返回值类型为:void
3.函数声明:
*** 当被调用函数出现在调用函数的下方,我们就要对被调用函数进行函数声明:(如下)
#include <stdio.h>
int func(int  );//函数声明
void main()
{ int a;
scanf("%d",&a);
if(func(a)) printf("%d 是偶数!\n",a);
else      printf("%d 是奇数!\n",a);
}
int func(int k)
{  if(k%2==0) return 1;
return 0;
isalpha 函数}
第四部分:函数间数据的传递
---实参和形参之间的数据的传递
---通过return语句来实现
---全局变量来实现
1.函数间简单的数值传递:
---简单的数值是由实参向形参进行单方向传递,形参的改变不会改变对应实参元素的值。因为此传递的过程相
当于"复制"的过程
例如1:
#include <stdio.h>
void fun(int a,int b,int c)
{ printf("2>a=%d,b=%d,c=%d\n",a,b,c);
a+=10;b+=20;c=a+b;
printf("3>a=%d,b=%d,c=%d\n",a,b,c);
}
void main()
{int x=10,y=20,z=30;
printf("1>x=%d,y=%d,z=%d\n",x,y,z);
fun(x,y,z);
printf("4>x=%d,y=%d,z=%d\n",x,y,z);
}
例如:
#include <stdio.h>
void fun(int a,int b)
{ int t;
printf("a=%d,b=%d\n",a,b);
t=a;a=b;b=t;
printf("a=%d,b=%d\n",a,b); 
}
void main()
{ int x=5,y=6;
printf("x=%d,y=%d\n",x,y);
fun(x,y);
printf("x=%d,y=%d\n",x,y);
}
例如1:  s=1/1+1/(1+2)+1/(1+2+3)....1/()
#include <stdio.h>
double add(int  n )
{ int i;
double sm=0.0,s=0.0;
for(i=1;i<=n;i++)
{ sm+=i;
s+=1/sm;
}
return s;
}
void main()
{ int n;
double s;
printf("请输入变量n的值:  ");
scanf("%d",&n);
s=add(n);
printf("s=%f\n",s);
}
例如:7.16
#include <stdio.h>
double fun(int n)
{int i;
double s=0.0,k=1.0;
for(i=1;i<=n;i++)
{ s+=k/i;
k=-k;
}
return s;
}
void main()
{ int n;
double s;
printf("请输入变量n的值:  ");
scanf("%d",&n);
s=fun(n);
printf("s=%f\n",s);
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。