数据类型 函数名 (【数据类型 变量名 】)
int i;
在main函数中,argc表示传递多少个参数,argv 表示传递的列表 ,字符指针数组的首地址
printf("hello!n");//一个 进程的返回状态是给他的父进程看的,
printf("argc = %d!",argc);
for(i=0;i<=argc;i++)
{
puts(argv[i]);
}
return 0;//结束当前函数
2、函数的传参
值传递:不会改变互换的参数
地址传递
void swap(int *p,int *q)
{
int tmp;
tmp = *p;
*p = *q;
*q = tmp;
}
全局变量传参
3、函数的调用函数的嵌套调用
递归:一个函数直接或者间接的调用自身
函数和一维数组
打印数组的数据
p[]等价一个指针 ,本质还是一个指针,形参。
void print_arr(int p[],int n);
传递只是传递的一维数组的起始地址,因此要用指针偏移打印。
void print_arr(int *p,int n)
{
for(int i=0;i<=n;i++)
{
printf("%d",*(p+i));
printf("n");
}
}
交换指针数组的顺序
void func(int *p,int n)
{
int i = 0,m;
m = (n-1)/2;
for(;i <= m;i++)
{
int temp,j;
j = n-1-i;
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
int a[] = {1,3,5,7,9};
for(int i=0;i
函数和二维数组
打印二维数组
void print_double_arr(int *p,int n)
{
for(int i=0;i
#define M 2
#define N 5
//第一种表示方式
void print_double_arr1(int (*p)[N],int m,int n);
//第二种表示方式
void print_double_arr1(int p[][N],int m,int n)
{
for(int i=0;i
打印固定的行的元素,注意什么时候传递行指针,什么时候传递列指针
void find_num(int (*p)[N],int num)
{
for(int i=0;i
第一种表示方式 ,将二维数组转换成为一维数组 p等价于(p+0)
void print_double_arr(int *p,int n) {
for(int i=0;i
#define M 2
#define N 5
//void print_double_arr1(int (*p)[N],int m,int n);//第一种表示方式
void print_double_arr1(int p[][N],int m,int n) //第二种表示方式
{
for(int i=0;i
函数与字符数组
char* mystrcpy(char *dest,const char *src)
{
char *ret = dest;
if((dest != NULL && src != NULL))
{
//使用循环实现把数值实现拷贝
while((*dest++ = *src++) != ' ')
{
}
}
return ret;
}
定义一个字符指针函数,返回值是char*类型
har* mystrncpy(char *dest,const char *src,size_t n)
{
int i;
for(i = 0;i 

