1.字符数组与字符串

详解指针C(3)

2、常量区

每一个exe使用内存的时候,是把内存分成不同的区域的
详解指针C(3)
数据区包括全局变量和常量区。
详解指针C(3)
出现0xC0000005表示的意思是访问错误。,一般对内存做了非法读写的时候,就会出现这个错误。
1、哪个可以修改?哪个不能改?
详解指针C(3)
经实验发现*(x+1)='A’出现访问错误提示。说明不能改*(x+1)的值
后面我又在上面的条件下,加了一行代码
详解指针C(3)
发现编译没有出错,说明x的值是可以改的,是x指向的那个字符串“china自己"本身不能改
那为什么不能让我们改呢?
因为x指向那个字符串存储在常量区。
那为什么y[1]能改呢?
因为数组y在全局区。
2、哪个可以修改?哪个不能改?
详解指针C(3)

详解指针C(3)
可以发现y数组已经把常量区的字符串拷贝了一份到堆栈了。
所以*(x+1 )=‘A’会失败;
y[1]='A’会成功;

3、常见字符串操作

// 1.判断字符串的长度的函数
int strlen (char * s)
{
int ret =0;
while(*s !=0)
{
ret++;
s++;

}
return ret;
}

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

char * strcpy (char * dest,char *src)
{ char * ret =dest;
while((*dest++) =(*src++));
return ret;
}

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

char* stract (char* dest, char* src)
{
char* ret=dest;
while(*dest !=0)
{
dest++;

}
while((*dest++) = (*src++));
return ret;
}

//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;
}
}
}

指针函数:其实就是一个函数,只不过他的返回值是个指针而已。

相关文章:

  • 2022-12-23
  • 2021-09-30
  • 2022-02-20
  • 2021-07-30
  • 2022-01-11
  • 2021-11-19
  • 2021-10-22
猜你喜欢
  • 2022-02-24
  • 2021-12-25
  • 2022-01-05
相关资源
相似解决方案