#include <stdio.h>
#include <string.h>
// C语言不支持数组之间的直接赋值
// 数组名是指向数组首个元素的地址
// 数组名作函数参数 需要一个数组指针来接
// 在函数定义中 int a[10] 这样的形参定义方式会被转化成 int *a
//void printA(int pa[100000])
void printA(int pa[])
//void printA(int *pa)
{
int i;
// 指针的大小是四个字节
printf ("%d\n", sizeof(pa));
for (i = 0; i < 10; i++)
{
printf("%d\n", pa[i]);
}
}
// 数组作函数参数的时候,没有办法通过指针获取数组的长度
// 数组的长度要作为参数传给函数
void printB(int *a, int len)
{
int i;
for (i = 0; i < len; i++)
{
printf ("%d\n", a[i]);
}
}
int main1()
{
int a[15] = {1,2,3,4,5,6,7,8,9,0, 11,12,13,14,15};
printA(a);
printB (a, sizeof(a)/sizeof(a[0]));
return 0;
}
// 将数组逆序
void rev(int *a, int len)
{
int min = 0;
int max = len-1;
int tmp;
while (min < max)
{
tmp = a[min];
a[min++] = a[max];
a[max--] = tmp;
}
}
int main2()
{
int a[10] = {1,2,3,4,5,6,7,8,9,0};
int len = sizeof(a)/sizeof(a[0]);
rev(a, len);
printB(a, len);
return 0;
}
// 求字符串长度
int myStrlen(char *str)
{
int len = 0;
while (str[len])
len++;
return len;
}
int myStrlen1(char *str, int n)
{
if (str[n])
{
int len = myStrlen1(str, n+1);
return len;
}
else
return n;
}
int main3()
{
char str[] = "hello";
int len = myStrlen1(str, 0);
printf ("%d\n", len);
return 0;
}
// 将字符串逆序
void reverse(char *str)
{
int len = strlen(str);
int min = 0;
int max = len - 1;
char tmp;
while (min < max)
{
tmp = str[min];
str[min++] = str[max];
str[max--] = tmp;
}
}
// I am from shanghai
int main()
{
char str[] = "you are from shanghai";
// 整个句子逆序
reverse(str);
char *p1 = str;
char *p2 = str;
while (*p2)
{
if (*p2 == ' ')
{
*p2 = '\0';
reverse(p1);
*p2 = ' ';
p1 = p2+1;
}
p2++;
}
reverse(p1);
puts(str);
return 0;
}
数组作函参的若干实例
最新推荐文章于 2024-03-31 18:59:00 发布