一、指针
使用指针封装函数实现strcpy
#include <stdio.h>
char copy(char *p,char *q);
int main()
{
char arr1[]="hellooo";
char arr2[]="world";
copy(arr1,arr2);
return 0;
}
char copy(char *p,char *q)
{
char *arr1 = p;
char *arr2 = q;
int i=0;
while(*(arr2+i) != '\0')
{
*(arr1+i)=*(arr2+i);
i++;
}
*(arr1+i)='\0';
puts(arr1);
}
使用指针封装函数实现strlen
#include <stdio.h>
int my_strlen(char *pstr);
int main()
{
char str[]="helloworld";
my_strlen(str);
return 0;
}
int my_strlen(char *pstr)
{
char *p=pstr;
int i=0;
while(*(p++)!='\0')
{
i++;
}
printf("%d\n",i);
}
二、指针数组
本质是一个数组,不过里面的元素都是指针
使用指针数组封装函数实现strcat
#include <stdio.h>
char my_strcat(char *str1,char *str2);
int main()
{
char p1[50]="666";
char p2[20]="7777";
my_strcat(p1,p2);
puts(p1);
return 0;
}
char my_strcat(char *str1,char *str2)
{
while(*str1!='\0')
{
str1++;
}
while(*str2!='\0')
{
*str1=*str2;
str1++;
str2++;
}
*str1='\0';
}
三、数组指针和一维数组
用数组指针封装函数,实现一维数组,输入,输出,冒泡排序
#include <stdio.h>
#define N 5
int INPUT(int (*p)[N])
{
printf("请输入%d个数:\n", N);
for(int i=0;i<N;i++)
{
scanf("%d",&(*p)[i]);
}
}
int OUTPUT(int (*p)[N])
{
for(int i=0;i<N;i++)
{
printf("%d ",(*p)[i]);
}
printf("\n");
}
int maopao(int (*p)[N])
{
for(int i=0;i<N-1;i++)
{
for(int j=0;j<N-1-i;j++)
{
if(*(*p+j)>*(*p+j+1))
{
int temp=*(*p+j);
*(*p+j)=*(*p+j+1);
*(*p+j+1)=temp;
}
}
}
}
int main()
{
int arr[N]={0};
INPUT(&arr);
maopao(&arr);
OUTPUT(&arr);
return 0;
}
四、数组指针和二维数组
二维数组的本质:数组元素是一维数组的一维数组
int arr[3][4] = {0};
int (*p)[4] = arr