当前位置: 技术问答>linux和unix
Linux下的一个指针类型,不懂了,
来源: 互联网 发布时间:2016-04-15
本文导语: struct country{ int mum; }; int *countnum; char *shm_addr; struct country* cont; shm_addr=(cha *)shmat(shm_id,NULL,0); cont = (struct country*)((void*)shm_addr+sizeof(int)); 最后一句是什么意思,好像是初始化的,但是初始化的是什么...
struct country{
int mum;
};
int *countnum;
char *shm_addr;
struct country* cont;
shm_addr=(cha *)shmat(shm_id,NULL,0);
cont = (struct country*)((void*)shm_addr+sizeof(int));
最后一句是什么意思,好像是初始化的,但是初始化的是什么,搞不太清楚,而且在linux编译时提示:“从不兼容的指针类型赋值”。
搞不明白是什么意思,该如何改正呢。
int mum;
};
int *countnum;
char *shm_addr;
struct country* cont;
shm_addr=(cha *)shmat(shm_id,NULL,0);
cont = (struct country*)((void*)shm_addr+sizeof(int));
最后一句是什么意思,好像是初始化的,但是初始化的是什么,搞不太清楚,而且在linux编译时提示:“从不兼容的指针类型赋值”。
搞不明白是什么意思,该如何改正呢。
|
“从不兼容的指针类型赋值” 应该是指这一句吧:shm_addr=(cha *)shmat(shm_id,NULL,0); 改为
shm_addr=(char *)shmat(shm_id,NULL,0);
cont = (struct country*)((void*)shm_addr+sizeof(int));
这一句的意思是:指针 cont 指向 shm_addr 向后偏移 sizeof(int) 个字节的地址。
shm_addr=(char *)shmat(shm_id,NULL,0);
cont = (struct country*)((void*)shm_addr+sizeof(int));
这一句的意思是:指针 cont 指向 shm_addr 向后偏移 sizeof(int) 个字节的地址。