VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 311|回复: 3

[已解决]为什么函数中形参是char *型

[复制链接]
65_avatar_middle
最佳答案
0 
在线会员 发表于 2021-8-10 14:21:52 | 显示全部楼层 |阅读模式
为什么图片中name的类型是字符数组型,下边构造函数的形参是char *型呢,我改成char再赋值会报错,如果两个都改成string就不会报错,搞不清楚这些的关系了...,,求助求助
最佳答案
74_avatar_small
2021-8-10 22:31:56
数组是根据类型所需内存分配的连续的一段内存

数组名不只是这个数组的代号,还是这个数组第一个元素的内存地址

为什么函数中形参是char *型
你看,每个元素地址相差1,char这个类型也是相差一个字节(大致理解一下,我不确定地址是不是按字节来分的)

如果你写的是char,说明这是一个字符变量
name的值又是数组首元素的地址(所以你在VS里面用数组名直接为其赋值字符串会报错),所以会报错
*另外有个小点,变量或者类实例的地址是无法修改的,相当于常量

那至于改成string有没问题的原因,本身string就支持向另一个string赋值,它是个类,自己封装了赋值符号,所以你直接赋值就没问题
InkedO]XC%OYAH1[_]P_X}R7NW}U_LI.jpg




上一篇:求组强制类型转换相关
下一篇:指针连续用两次怎么就变了
74_avatar_middle
最佳答案
3 
在线会员 发表于 2021-8-10 22:31:56 | 显示全部楼层    本楼为最佳答案   
bestAnswer
数组是根据类型所需内存分配的连续的一段内存

数组名不只是这个数组的代号,还是这个数组第一个元素的内存地址

为什么函数中形参是char *型
你看,每个元素地址相差1,char这个类型也是相差一个字节(大致理解一下,我不确定地址是不是按字节来分的)

如果你写的是char,说明这是一个字符变量
name的值又是数组首元素的地址(所以你在VS里面用数组名直接为其赋值字符串会报错),所以会报错
*另外有个小点,变量或者类实例的地址是无法修改的,相当于常量

那至于改成string有没问题的原因,本身string就支持向另一个string赋值,它是个类,自己封装了赋值符号,所以你直接赋值就没问题
31_avatar_middle
最佳答案
46 
在线会员 发表于 2021-8-11 00:10:45 | 显示全部楼层
办个会员好好学基础
46_avatar_middle
最佳答案
0 
在线会员 发表于 2021-8-12 17:00:29 | 显示全部楼层
char name[]  是一个字符数组,而数组的本质就是指针,形参的类型必须也得是指针类型
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2021-9-27 05:28

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表