wuxianbiao 发表于 2021-8-11 22:58:08

c++指针操作字符串

#include <stdio.h>
#include <string.h>
char *strcpy(char *str,char *target,int size)
{
      int i;
      memset(str,0,size);
      for(i=0;i<size;i++)
      {
                *(str+i) = *(target+i);
      }
      //*(str+size) = '\n';
      return str;

}
int main(void)
{
      char *str1 = (char *)"hello world";
      char *target =(char *)"hello linux code";
      int size = strlen(str1);
      char *str = strcpy(str1,target,size);
      return 0;
}

wuxianbiao 发表于 2021-8-11 22:58:49

请问,各位大佬为什么程序报错。函数是想实现对strcpy函数的重载。

万千只cnm 发表于 2021-8-11 23:03:32

你常量怎么能修改

人造人 发表于 2021-8-11 23:10:27

这不是 C 语言么?

wp231957 发表于 2021-8-12 08:44:27

char *str1 = (char *)"hello world";
      char *target =(char *)"hello linux code";
这样的声明是无法修改的只能读 不能写

wuxianbiao 发表于 2021-8-12 22:16:30

wp231957 发表于 2021-8-12 08:44
char *str1 = (char *)"hello world";
      char *target =(char *)"hello linux code";
这样的声明...

第一次接触C++,r如果不加强制转换,会告警。

人造人 发表于 2021-8-12 22:28:10

wuxianbiao 发表于 2021-8-12 22:16
第一次接触C++,r如果不加强制转换,会告警。

字符串常量是 常量
常量是不能改变的

人造人 发表于 2021-8-12 22:28:51

wuxianbiao 发表于 2021-8-12 22:16
第一次接触C++,r如果不加强制转换,会告警。

什么是变量?,什么是常量?

jhq999 发表于 2021-8-13 06:41:25

我理解这个"hello linux code"是常量,char *str1 = (char *)"hello world";只不过是把这个常量的指针赋值给str1,所以修改str1指针下的内容,就是修改常量当然报错。
页: [1]
查看完整版本: c++指针操作字符串