指针作为函数参数:
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
void print(int * arr,int len)
{
//函数参数中如果有指针 数组 都会转化为指针 sizeof求出来的是指针类型的大小 无符号整数类型 4 所以求出来得知不能作为数组的循环条件
for (int i = 0; i < len; i++)
{
printf("%d\n", arr[i]);
}
}
int main()
{
int arr[] = { 1, 2, 3, 4, 6, 0, 7, 8, 9, 10 };
print(arr,sizeof(arr)/sizeof(arr[0]));
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
void print(int * arr,int len)
{
//函数参数中如果有指针 数组 都会转化为指针 sizeof求出来的是指针类型的大小 无符号整数类型 4 所以求出来得知不能作为数组的循环条件
for (int i = 0; i < len; i++)
{
printf("%d\n", arr[i]);
}
}
int main()
{
int arr[] = { 1, 2, 3, 4, 6, 0, 7, 8, 9, 10 };
print(arr,sizeof(arr)/sizeof(arr[0]));
system("pause");
return EXIT_SUCCESS;
}
//1.数组作为函数参数可以退化为指针
//2.在传递数组时需要加上传递个数
void print(char * arr)
{
//两种方式求出字符串长度
int len = strlen(arr);
}
int main()
{
char arr[] = "hello world";//有判断条件\0
print(arr);
return 0;
}
int main()
{
char arr[] = "hello world";//有判断条件\0
print(arr);
return 0;
}
函数的返回值是指针:
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
char * test()
{ //字符数组 创建位置在栈位
//char * arr[] = "hello world";
//字符串常量 会在程序运行时运行 常量区 不能被修改的 在程序结束时销毁
char * arr = "hello world";
//保证指针地址对应的值是有内容的
return arr;
}
int main()
{
char * p = test();
printf("%s\n", p);
printf("%p\n", p);
system("pause");
return EXIT_SUCCESS;
}
return EXIT_SUCCESS;
}
实现strstr函数
/*
1.两个匹配的字符串 必须完全匹配 匹配个数=字符串长度
2.如果匹配一个字符串,需要记录被匹配字符串的地址
3.如果匹配一半未成功,回到记录被匹配字符串地址+1
4.如果匹配的被匹配字符串的结尾 匹配个数 不等于 字符串长度
*/
/*
1.两个匹配的字符串 必须完全匹配 匹配个数=字符串长度
2.如果匹配一个字符串,需要记录被匹配字符串的地址
3.如果匹配一半未成功,回到记录被匹配字符串地址+1
4.如果匹配的被匹配字符串的结尾 匹配个数 不等于 字符串长度
*/
指针和字符串:
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main()
{
char arr[] = "hello world";
char * p;
p = arr;
*p = 'A';//arr[0]=A
p++;//p加1,p为A后面的字符串
*p = 'B';//p的结果为Bllo world
printf("%s\n", p);
{
char arr[] = "hello world";
char * p;
p = arr;
*p = 'A';//arr[0]=A
p++;//p加1,p为A后面的字符串
*p = 'B';//p的结果为Bllo world
printf("%s\n", p);
system("pause");
return EXIT_SUCCESS;
}
return EXIT_SUCCESS;
}
char * arr=" " 字符串常量是一个常量的数组 可以读取字符或字符串 但不能修改
字符串常量,和程序有相同的生命周期 程序进行,他也进行,程序结束,他也一同结束
char arr[]= 存于栈区 常量可以修改
void mystrcat(char * arr, char * s1)
{
while (*arr)//取arr的值
{
arr++;//arr到零之后的\n
while (*arr=*s1)//把*s1的内容加在hello之后
{
while (*arr)//取arr的值
{
arr++;//arr到零之后的\n
while (*arr=*s1)//把*s1的内容加在hello之后
}
}
}
int main()
{
char arr[100] = "hello";
char * s1 = "world";
mystrcat(arr, s1);
printf("%s\n", arr);
}
{
char arr[100] = "hello";
char * s1 = "world";
mystrcat(arr, s1);
printf("%s\n", arr);
}