一.作业
1> 自定义函数(my_strlen)实现strlen函数的功能
//自定义函数(my_strlen)实现strlen函数的功能
int my_strlen(char*arr)
{
if(*arr=='\0')
{
return 0;
}
else
{
return 1+my_strlen(arr+1);
}
}
2> 自定义函数(my_strcpy)实现strcpy函数的功能
//自定义函数(my_strcpy)实现strcpy函数的功能
void my_strcpy(char*arr, char*brr)
{
while(*brr!='\0')
{
*arr++=*brr++;
}
*arr='\0';
}
3> 自定义函数(my_strcmp)实现strcmo函数的功能
//自定义函数(my_strcmp)实现strcmp函数的功能
int my_strcmp(char*arr,char*brr)
{
int n=0;
while(n==0)
{
n= *arr++ - *brr++;
}
return n;
}
4> 自定义函数(my_strcat)实现strcat函数的功能
//自定义函数(my_strcat)实现strcat函数的功能
void my_strcat(char*arr,char*brr)
{
while(*brr!='\0')
{
if(*arr=='\0'&&*brr!='\0')
{
*arr++=*brr++;
}else
{
arr++;
}
}
}
5> 自定义函数(my_strstr)实现求src字符串中是否包含子串dest字符串
//自定义函数(my_strstr)实现strstr函数的功能
char*my_strstr(const char*arr,const char*brr)
{
if(!*brr)
{
return (char*)arr;
}
for(const char*h=arr;*h!='\0';h++)
{
char*temp_h=h;
char*temp_n=brr;
while(*temp_h&&*temp_n&&*temp_h++==*temp_n++);
if(!*temp_n)
{
return (char*)h;
}
}
return NULL;
}
补充:atio自定义
二.笔记
1.指针指向数组
1.1指针与数组的关系
1> 一维数组的数组名,本质上是一个该数组的第一个元素的地址
int arr[5]; arr <==> &arr[0]
2> 数组名是一个地址常量,不能被重新赋值,但是,数组名可以进行偏移
3> 二维数组的数组名,从数值上来说也是一个该数组第一个元素的地址
int arr[3][4]; arr <==> &arr[0] arr[0] <==> &arr[0][0] arr[1] <==>&arr[1][0]
3.2 指针与一维数组关系实现
1> 指针与一维数组的关系
#include<stdio.h>
int main(int argc, const char *argv[])
{
//定义一个一维数组
int arr[] = {3,8,3,2,4};
int len = sizeof(arr)/sizeof(arr[0]); //求数组长度
//定义指针指向一维数组
int *ptr = arr; //int *ptr = &arr[0];
//数据输出方式1,从值的角度
printf("数据元素分别是:");
for(int i=0; i<len; i++)
{
printf("%d\t", arr[i]);
}
printf("\n");
//输出方式2:从数组名的角度
printf("数据元素分别是:");
for(int i=0; i<len; i++)
{
printf("%d\t", *(arr+i) );
}
printf("\n");
//输出方式3:从指针变量的角度
printf("数据元素分别是:");
for(int i=0; i<len; i++)
{
printf("%d\t", *(ptr+i) );
}
printf("\n");
//输出方式4:从指针的角度找值
printf("数据元素分别是:");
for(int i=0; i<len; i++)
{
printf("%d\t", ptr[i]);
}
printf("\n");
//输出方式5:从指针变量的角度
printf("数据元素分别是:");
for(int i=0; i<len; i++)
{
printf("%d\t", *(ptr++));
}
printf("\n");
return 0;
}
2> 指针指向一维整型数组作为函数参数传递
当实参使用的是数组名进行传递时,本质上传递的是数组首元素的地址
被调函数的形参可以是一个数组接收,也可以是一个指针变量接收
3> 指针指向一维字符数组作为函数参数传递
1、由于字符串有结束标识,所以接收字符串时,可以不用接收字符串长度
2、一般对传入的字符串如果不进行更改操作的话,需要加上关键字const修饰
1.3.指针与字符串的关系
1.字符串的本质上是一个指针变量,可以定义一个指针指向一个字符串
2.当一个指针指向这一个字符串的时候,不呢通过该指针改变字符串中的内容
1.4const关键字
1.const 中文含义 常量,常属性
2.该关键字是一个变量的存储格式,修饰变量时,表示给该变量添加常属性
3.const修饰的变量,虽然有常属性,但是,还依然是一个变量
4.定义变量的格式 const 数据类型 变量名
5.修饰变量时,包括修饰普通变量和指针变量,有所不同
1.5const修饰指针变量(重要)
定义指针变量的格式: 数据类型 * 指针名;