社区
C++ 语言
帖子详情
关于scrcpy传递的参数问题
nbabest23
2009-07-29 10:58:25
函数中定义了一个 指向字符的指针,一个字符数组
char *a="qwer";
char st[]="asdf";
想使用scrcpy将st[]中的字符串复制到*a中
scrcpy(a,st);
编译没有错误,但是运行时会弹出一个错误窗口
但是写成scrcpy(st,a)
就没有问题,请高手帮忙指点下,3Q
...全文
617
12
打赏
收藏
关于scrcpy传递的参数问题
函数中定义了一个 指向字符的指针,一个字符数组 char *a="qwer"; char st[]="asdf"; 想使用scrcpy将st[]中的字符串复制到*a中 scrcpy(a,st); 编译没有错误,但是运行时会弹出一个错误窗口 但是写成scrcpy(st,a) 就没有问题,请高手帮忙指点下,3Q
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
amossavez
2009-07-29
打赏
举报
回复
[Quote=引用楼主 nbabest23 的回复:]
函数中定义了一个 指向字符的指针,一个字符数组
char *a="qwer";
char st[]="asdf";
想使用scrcpy将st[]中的字符串复制到*a中
scrcpy(a,st);
编译没有错误,但是运行时会弹出一个错误窗口
但是写成scrcpy(st,a)
就没有问题,请高手帮忙指点下,3Q
[/Quote]
char*是const,不允许你更改他的内容的!
猫已经找不回了
2009-07-29
打赏
举报
回复
char *a="qwer"; //a只是声明一个指针指向常量区数据,首先它是const,不能被cpy,此外,你这样strcpy很容易内存越界
改成
char a[]="qwer";
char st[]="asdf";
即可。
但是要保证a的内存足够
iitlhnhlhnh
2009-07-29
打赏
举报
回复
scrcpy(&(*st),a);
st指针指下的内存地址:&(*st) .
kouwenlong
2009-07-29
打赏
举报
回复
char *a="qwer";
字符串指针变量.
char st[]="asdf";
同样是字符串指针变量,但是指向一块固定的内存.
所以可以向里面复制.
rendao0563
2009-07-29
打赏
举报
回复
scrcpy? 是说的strcpy吧?
crst_zh
2009-07-29
打赏
举报
回复
a是字符串常量,不允许修改。
char a[256]="qwer";
char st[]="asdf";
这样就对了
newpuple
2009-07-29
打赏
举报
回复
scrcpy(a,st);
编译没有错误,但是运行时会弹出一个错误窗口
但是写成scrcpy(st,a)
就没有问题,请高手帮忙指点下,3Q
很明显你定义了两个字符,但是用两种不同的方式去访问,
第一种是用指针,但是请注意该指针没有内存,仅仅是指向字符串的地址罢了
第二种是数组,直接通过数组下标访问,但是该数组大小为5,是系统自动分配的,也就是有内存.
因而你第一中拷贝必定出错,原因是,将一个内存拷贝给一个没有内存的指针,怎么会不出错,并且该指针指向的内容应该为静态数据区;第二种拷贝不会出错是因为数组是有内存的,当然可以拷贝成功.
nbabest23
2009-07-29
打赏
举报
回复
如果是a[10]肯定没有问题,我就是想知道,为什么第一个参数是指针形式的话 会出现错误
yshuise
2009-07-29
打赏
举报
回复
char a[10];
试试
feilong_1216
2009-07-29
打赏
举报
回复
char *a="qwer" 中"qwer"静态常量,不是new 出来的指针。指针a值是不允许修改的。所以在拷贝值的时候会出错。
在写程序的时候不允许这样用,这样用很危险,建议这样写,char a[] = "qwer",所以你第二个函数scrcpy(st,a) 是静态常量给可写变量写值是正确的
crst_zh
2009-07-29
打赏
举报
回复
[Quote=引用 10 楼 nbabest23 的回复:]
大家的观点无非两个
1.3楼关于内存的说法,这种说法我觉得很有道理
2.楼上的两位说char * 是const
char *a="qwer";
char st[]="asdf";
a=st;
cout < <a < <endl;
虽然这个没有使用strcpy但是,我直接把st副给了指针a, 修改了他的内容啊,程序可以正常运行也没有出错,我觉得这个观点应该是错误的吧
指针常量和常量指针是不同的,一个是指针不能变,一个是指针指向的内容不能变。
你举的例子是改变了指针,当然可以了。
事实上char *a="qwer",a是一个常量指针(指向的内容不能变,所以*a不能被修改)
而不是指针常量。
你得搞清char *const和char * const p的区别
[/Quote]
nbabest23
2009-07-29
打赏
举报
回复
大家的观点无非两个
1.3楼关于内存的说法,这种说法我觉得很有道理
2.楼上的两位说char * 是const
char *a="qwer";
char st[]="asdf";
a=st;
cout<<a<<endl;
虽然这个没有使用strcpy但是,我直接把st副给了指针a, 修改了他的内容啊,程序可以正常运行也没有出错,我觉得这个观点应该是错误的吧
易语言调用S
crc
py
多屏幕设屏.zip
易语言调用S
crc
py
多屏幕设屏
S
crc
py
32.rar
S
crc
py
1.12.1 android 投屏工具 32位
s
crc
py
命令
提供了一个选项 --legacy-paste 来更改 Ctrl+v 和 MOD+v 的行为,以便它们也将计算机剪贴板文本作为关键事件序列注入(与 MOD+Shift+v 的方式相同)。这将在/dev/videoN中创建一个新的视频设备,其中N是一个整数(创建多个设备或具有特定id的设备有更多选项)。要将文件推送到设备上的 /sdcard/Download/,请将(非 APK)文件拖放到 s
crc
py
窗口。MOD+r 请求设备在纵向和横向之间切换(当前运行的应用程序可能会拒绝,如果它不支持请求的方向)。
s
crc
py
用法大全
【代码】s
crc
py
用法大全。
Android 15 使用 s
crc
py
2.7 投屏闪退
问题
遇到s
crc
py
2.7闪退的
问题
,根本原因在于默认音频驱动(WASAPI)无法初始化音频设备。通过设置环境变量和禁用音频输出,成功解决了该
问题
。如果你也遇到类似的
问题
,可以尝试修改脚本以绕过音频相关的错误。下载地址。
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章