每个C语言函数都包含三个主要部分:
基本语法格式如下:
返回值类型 函数名(形式参数)
{
// 函数体
声明部分
语句部分
}
函数的工作流程可以概括为:输入 -> 处理 -> 输出。这个过程中:
函数参数分为形式参数(形参)和实际参数(实参):
当数组作为函数参数时,有几个重要的特点:
void printArray(int arr[])
void print2DArray(int arr[][10], int rows) // 必须指定列数
关于函数返回值,有几点需要特别注意:
int maxOfArray(int arr[], int len)
{
int max = arr[0];
for(int i = 1; i < len; i++)
{
if(arr[i] > max)
{
max = arr[i];
}
}
return max;
}
void reverseArray(int arr[], int len)
{
int left = 0, right = len - 1;
while(left < right)
{
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
add(a, b);
result = add(a, b) + 3;
printf("result = %d\n", add(1, 2));
字符数组作为函数参数时有个重要特点:由于字符串末尾有'\0'
作为结束标志,我们往往不需要传递数组长度参数。这一点与整型数组有很大区别。
// 形参写法
void processString(char str[])
{
// 函数体
}
int Strlen(char str[])
{
int len = 0;
while(str[len] != '\0')
{
len++;
}
return len;
}
void Strcpy(char dest[], char src[])
{
int i = 0;
while(src[i] != '\0')
{
dest[i] = src[i];
i++;
}
dest[i] = '\0'; // 最后复制结束符
}
void Strcat(char dest[], char src[])
{
int i = 0;
// 找到目标字符串的末尾
while(dest[i] != '\0')
{
i++;
}
// 将源字符串接到末尾
int j = 0;
while(src[j] != '\0')
{
dest[i] = src[j];
i++;
j++;
}
dest[i] = '\0'; // 添加结束符
}
// 形参写法
void process2DString(char str[][10], int rows) // 必须指定列数
{
// 函数体
}
字符串数组排序(按字典序):
void sortStrings(char strs[][10], int rows)
{
for(int i = 0; i < rows-1; i++)
{
for(int j = 0; j < rows-1-i; j++)
{
if(strcmp(strs[j], strs[j+1]) > 0)
{
// 交换两个字符串
char temp[10];
strcpy(temp, strs[j]);
strcpy(strs[j], strs[j+1]);
strcpy(strs[j+1], temp);
}
}
}
}