封装一个函数实现MyStrlen实现strlen的功能
#include<stdio.h>
int mystrlen(char *p)
{
int q = 0;
while(*p != '\0')
{
p++;
q++;
}
return q;
}
int main()
{
char a[32] = {0};
gets(a);
int len = mystrlen(a);
printf("len = %d\n",len);
return 0;
}
封装一个函数实现MyStrcpy实现strcpy的功能
#include<stdio.h>
int nostrcpy(char *y, char *x)
{
while(*x != '\0')
{
*y = *x;
y++;
x++;
}
*y = '\0';
return 0;
}
int main()
{
char a[32] = {0};
char b[32] = {0};
gets(a);
nostrcpy(b,a);
puts(a);
puts(b);
return 0;
}
封装一个函数实现MyStrcat实现strcat的功能
#include<stdio.h>
int nostrcat(char *y, char *x)
{
while(*y != '\0')
{
y++;
}
while(*x != '\0')
{
*y = *x;
x++;
y++;
}
*y = '\0';
return 0;
}
int main()
{
char a[32] = {0};
char b[32] = {0};
gets(a);
gets(b);
nostrcat(a,b);
puts(a);
puts(b);
return 0;
}
封装一个函数实现MyStrcmp实现strcmp的功能
#include<stdio.h>
int nostrcmp(char *x, char *y)
{
int tmp = 0;
while(*x == *y && *x != '\0')
{
x++;
y++;
}
tmp = *x - *y;
return tmp;
}
int main()
{
char a[32] = {0};
char b[32] = {0};
gets(a);
gets(b);
int cmp= nostrcmp(a,b);
printf("CMP = %d\n",cmp);
return 0;
}
封装一个函数实现字符串的倒置(逆序)
int InvertString(char *pstr);
#include<stdio.h>
#include<string.h>
int inverstring(char *pstr, int d)
{
char *qstr = NULL;char tmp = 0;
qstr = pstr + (--d);
while(pstr < qstr)
{
tmp = *pstr;
*pstr = *qstr;
*qstr = tmp;
pstr ++;
qstr --;
}
return 0;
}
int main()
{
int len = 0;
char a[32] = {0};
gets(a);
len = strlen(a);
inverstring(a,len);
puts(a);
return 0;
}
从终端输入一个a和n封装函数按照如下公式获得结果
a:3
n:5
3+33+333+3333+33333 = 37035
#include<stdio.h>
int qiuhe(int x,int y)
{ int i =0;
int ge = 0, he = 0;
for(i = 0; i < y; i++)
{
ge = ge*10 +a;
he += ge;
}
return he;
}
int main()
{
int a = 0, n = 0;
int sum = 0;
scanf("%d%d",&a,&n);
sum = qiuhe(a,n);
printf("sum = %d\n",sum);
return 0;
}
1.数组和指针的关系:
1.一维数组和指针的关系:
数组的数组名a是指向数组第一个元素的一个指针常量
a == &a[0]
a 的类型可以理解为 int *
有两种情况除外:
1.sizeof运算时
2.&运算符
&int * == int **
&int [5] == int (*)[5]
访问下标为n的数组元素的方式:
a[n] == *(a+n) == *(p+n) == p[n]
2.一维数组传参:
int a[5] = {0};
int Fun(int parray[5]);
int Fun(int parray[], int len);
int Fun(int *parray, int len);
3.一维字符型数组传参:
char str[32] = {0};
int Fun(char *pstr, int len);
4.字符串传参:
char str[32] = {"hello world"};
int Fun(char *pstr);
2.数组指针和指针数组:
数组指针是指针,指针指向一个数组
指针数组时数组,数组每个元素都是指针类型
int *a[5] = {NULL};
定义一个指针数组,数组占40个字节空间,每个元素为int *型,共5个元素
int (*a)[5] = NULL;
定义一个数组指针变量,占8个字节空间,指针指向了一个int类型5个元素的数组
1.数组指针:
int a[5];
&a:获得数组的首地址,其类型为int (*)[5]
注意:
对一维数组数组名&,值不变,类型升级为数组指针类型
对数组指针*,值不变,类型降级成为指向数组第一个元素的指针