我是这样写的
char c[4];
int i=100;
memcpy(c,i,4);
我就是想吧int赋给char,因为int占4bit 所以我给char也分了4bit
但是总报错,
我想知道 如果互转
我吧int 给char =malloc(4) 然后 我在截取char(4) 赋给int 这样互转
哦 不好意思 我写错了 是占4个byte 不是位
还有 memcpy 里的 参数写饭了...
可以按照下面代码示意的内容操作,即可完成赋值:
char c[4]; 也可以使用memcpy,示意代码如下:
推荐使用第一种方法,这样当要将值回传的时候,只需要按照下面的操作即可
灵活使用指针类型转换,可以极大的简化程序代码,这个问题即是一个好例子
:) 谢谢你, 你攒过报文吗, 我的问题 在你帖子上面 你能帮我看看 我这么做对不对吗? 是不是通常 都是这么做的?
追答哪个帖子?用百度High发地址给我吧
追问:) 对不起啊 我们公司网速很卡,除了baidu首页 ,其他的都很难打开
我还想问你个 strcpy和memcpy 有什么区别吗?
还有一个问题
char *p
p = "abcde"; 这一句我知道指的常量
p=malloc(6);strcpy(p,"abcde");这是第二句
如果我不打算修改p里的内容, 这两句性能上有区别吗? 哪种更好一点
性能上来说,常量要有优势一些,你的第二句,分配内存,然后拷贝,其实strcpy的第二个参数也是会隐式的分配到常量区的。
strcpy和memcpy的区别就是,一个是按字符串拷贝,遇到'\0'就停止,memcpy则不受这个限制,可以说strcpy是一种特殊的memcpy
非常感谢,
那个strcpy(p,"abc");
这个 常量里的abc 是不是就变成脏数据了, 消灭不了了吧?
有没有什么方法,可以不产生脏数据 就赋值的
还有 我想问你一个问题, 比方 memcpy(m+3,(char *)0xFF,1); 这样报错,
怎样不用临时变量 就可以把0xff 当初一个char 拷给m内存的第3个位置上啊?
1. 常量区的数据确实不是程序员来管理的,但是你的数据一定得有个来源才行,如果你不想产生这些数据的话,那么只能把数据写到文件中,使用的时候从文件读取。这样,整个内存管理过程都是在你的可控范围。
2. memcpy(m+3,(char *)0xFF,1);这句话我得先确认m是个什么类型,假定是个指针,也是要分类型的,不同类型的指针加3之后得到的地址是不一样的,这个你应该明白。然后第二个参数的问题,按照你的写法这就是去拷贝内存中地址为0XFF的内存中的数据,如果不用临时变量的话怕是只能通过memcpy(m + 3, "\xff", 1);这种方式来进行,不过这种单字节的通常直接赋值就可以了,没必要用memcpy吧
==,我没看懂,
清空不是 '\0'这样吗, 你干嘛前面要加一个斜杠啊?
还有你后面的igmbll是什么意思?
如果是-1 存到int里会怎样? 也应该是-1吧 也应该占一个字节吧, char -125 +126不都是一个字节吗, 你后面干嘛特意提一下4字节啊?
感觉你好像 什么都没说完啊
谢谢你, :) 第四条回复里我追问了一个问题, 你方便帮我看一下吗
就是char short int 那个占几个字节的问题
char占一个字节,int是两个或者四个,short int 是要求不要比int所占的字节数多就可以