打印数组
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void Print(int *arr, int len)
{
int *p = arr;//把数组首元素的地址给p
for (int i = 0; i < len; i++)
{
printf("%d\t", *(p + i));//指针依次向后挪,解引用打印所存储的内容
//printf("%d\t",p[i])作用一样,[]具有解引用功能
}
}
int main()
{
int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int len = sizeof(arr) / sizeof(arr[0]);
Print(arr, len);
return 0;
}
模拟实现库函数strlen
①
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int len(char* p)
{
if ( *p== '\0')
return 0;
else
{
return 1 + len(p + 1);//用递归
}
}
int main()
{
char str[] = "wo ai wo ma ma !";
printf("%d\n", len(str));
return 0;
}
②
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int myStrlen(char *p)
{
char *s = p;
while (*s != '\0')
{
s++;
}
return s - p;
}
int main()
{
char *z = "wo hen shuai";
printf("%d\n", myStrlen(z));
return 0;
}
模拟实现库函数strcpy
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void copy(char* str1,char* str2)
{
for (int i = 0;; i++)
{
*(str2 + i) = *(str1 + i);
if (*(str1+i) == '\0')
break;
}
}
int main()
{
char str1[500];
char str2[500];
scanf("%s",str1);
copy(str1,str2);
printf("复制后str2的内容为:%s\n", str2);
return 0;
}