指针字符串复制问题
答案:2 悬赏:10 手机版
解决时间 2021-04-16 08:47
- 提问者网友:却不属于对方
- 2021-04-16 04:13
指针字符串复制问题
最佳答案
- 五星知识达人网友:逃夭
- 2021-04-16 05:29
str和str2是两个指针,
str1=str2是把str2的指向对象地址赋给了str1,即str1和str2都指向同一变量的存储地址值,
*str1=*str2这个语句是错误的 !
*str1是取指针str里的内容!!
举个例子(不怎恰当):
我们把str1、str2看做盒子,str1里放"hello"(我们看做苹果),
str2里放"world"(我们看做梨),,
*str1=*str2就相当于把"梨放到苹果里",不可能!!
再有:程序中的"hello","world"为字符串常量,其的存储位置只读,不能够修改!!
*str1=*str2这语句为赋值表达式,赋值表达式的左值必须是一个变量,常量和标量都是不能够进行赋值操作的!!追问那是否可以用strcpy(str1,str2)追答你的本程序中的str1,str2两个指针变量的指向为字符串常量,只读,不能用!!
strcpy(str1,str2)中的str1必须为一个可以操作(可写)的地址值,后面一个无所谓!!
你可以在定了指针变量,将str1给替换掉!!!
你试试!!
eg:
char *str1="hello",*str2="world",*str=NULL;
str1=str2;
strcpy(str,str2)
str1=str2是把str2的指向对象地址赋给了str1,即str1和str2都指向同一变量的存储地址值,
*str1=*str2这个语句是错误的 !
*str1是取指针str里的内容!!
举个例子(不怎恰当):
我们把str1、str2看做盒子,str1里放"hello"(我们看做苹果),
str2里放"world"(我们看做梨),,
*str1=*str2就相当于把"梨放到苹果里",不可能!!
再有:程序中的"hello","world"为字符串常量,其的存储位置只读,不能够修改!!
*str1=*str2这语句为赋值表达式,赋值表达式的左值必须是一个变量,常量和标量都是不能够进行赋值操作的!!追问那是否可以用strcpy(str1,str2)追答你的本程序中的str1,str2两个指针变量的指向为字符串常量,只读,不能用!!
strcpy(str1,str2)中的str1必须为一个可以操作(可写)的地址值,后面一个无所谓!!
你可以在定了指针变量,将str1给替换掉!!!
你试试!!
eg:
char *str1="hello",*str2="world",*str=NULL;
str1=str2;
strcpy(str,str2)
全部回答
- 1楼网友:天凉才是好个秋
- 2021-04-16 06:48
首先要明白:
char *str1="hello" //定义一个字符指针变量,指向一个字符串常量"hello"
//在系统内部也是按数组存放,但是一个无名数组
char str1[ ]="hello"//定义一个字符数组,里面存放"hello"这个字符串(包括字符串结束标志)
char str2[ ]="world"//在str1这个字符数组里面,str[0]='h',str[1]='e'......str[5]='\0';相当于每一个字符
//存放在一个变量中,可以执行*str1=*str2(str1[0]=str2[0])
上面的例子:
*str1=*str2//相当于 常量=常量(常量对常量赋值) 肯定不行.
char *str1="hello" //定义一个字符指针变量,指向一个字符串常量"hello"
//在系统内部也是按数组存放,但是一个无名数组
char str1[ ]="hello"//定义一个字符数组,里面存放"hello"这个字符串(包括字符串结束标志)
char str2[ ]="world"//在str1这个字符数组里面,str[0]='h',str[1]='e'......str[5]='\0';相当于每一个字符
//存放在一个变量中,可以执行*str1=*str2(str1[0]=str2[0])
上面的例子:
*str1=*str2//相当于 常量=常量(常量对常量赋值) 肯定不行.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯