P32-P34指针3,4,5

代码区 代码
栈 参数,局部变量
全局变量 全局变量 可读,可写
常量区 常量区 可读,不可写

常量字符串的拷贝:

void Function()
{
char* x = "china";

char y[] = "china";

*(x+1) = 'A';

y[1] = 'A';

}

char* x = “china” 不拷贝 china为常量 x存储的为当前常量的地址 但char y[]="china"要几个就从常量区拷贝到堆栈里 *(x+1) = ‘A’失败

!!!!!!!!!!!!!
指针函数:就是一个函数 因为返回值是个*类型
!!!!!!!!!!!!!!!!!!!!
指针数组:实质就是一个数组,存的是带*的数组 即用指针表示的数组
遍历所有数据?

for(int i=0;i<5;i++)
{
printf("%c\n",*(arr[i]));
}

1、int strlen (char* s)
返回值是字符串s的长度。不包括结束符'/0'。

int strlen (char* s)
{
int len = 0;
while(*(s) != 0)
{
  len++;
  s++;
}
return len;
}


2、char* strcpy (char* dest, char* src);
复制字符串src到dest中。返回指针为dest的值。

char* strcpy (char* dest,char* src)
{
while((*(dest++)=*(src++))!=0); //while(*(dest++)=*(src++))
  return dest;
}
/*while(*src)
{
*dest = *src;
dest++;
src++;
}
*/


3、char* strcat (char* dest, char* src);
将字符串src添加到dest尾部。返回指针为dest的值。

char* strcat (char* dest, char* src)
{
while(*dest != '\0')
  dest++;
while((*dest++ = *src++)!='\0');
  return dest;
}

4、int strcmp ( char* s1, char* s2);
一样返回0 不一样返回1

int strcmp(char* s1, char* s2)
{
while(*s1 != '\0' && *s2 != '\0')
{
  if(*s1 != *s2)
    return 1;
  s1++;
  s2++;
}
if(*s1 == '\0' && *s2 == '\0')
  return 0;
else
  return 1;
}

 


posted @ 2023-03-16 14:39  摸鱼小曹  阅读(18)  评论(0)    收藏  举报