指针(下)

指针作为函数参数:
#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;
}

函数的返回值是指针:
#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;
}
 
 
实现strstr函数
/*
1.两个匹配的字符串  必须完全匹配  匹配个数=字符串长度
2.如果匹配一个字符串,需要记录被匹配字符串的地址
3.如果匹配一半未成功,回到记录被匹配字符串地址+1
4.如果匹配的被匹配字符串的结尾  匹配个数  不等于  字符串长度
*/
 
指针和字符串:
#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);
  system("pause");
 return EXIT_SUCCESS;
}
 

char * arr="    "     字符串常量是一个常量的数组   可以读取字符或字符串   但不能修改
字符串常量,和程序有相同的生命周期   程序进行,他也进行,程序结束,他也一同结束
char arr[]=    存于栈区    常量可以修改   
 
 
 
void mystrcat(char * arr, char * s1)
{
 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);
}

posted on 2019-04-18 22:18  不冒泡的苏打水  阅读(117)  评论(0编辑  收藏  举报

导航