首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于结构体地址的有关问题

2012-08-13 
关于结构体地址的问题小弟调程序的时候出现了如下问题就是将一个字符串发送出去,如果照下面写则收到的数据

关于结构体地址的问题
小弟调程序的时候出现了如下问题
就是将一个字符串发送出去,如果照下面写则收到的数据包内容是Hello

C/C++ code
char *a = "Hello";uip_send(a,5);

其中uip_send()
C/C++ code
voiduip_send(void *data, int len){  int copylen;#define MIN(a,b) ((a) < (b)? (a): (b))  copylen = MIN(len, UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN -                (int)((char *)uip_sappdata - (char *)&uip_buf[UIP_LLH_LEN + UIP_TCPIP_HLEN]));  if(copylen > 0) {    uip_slen = copylen;    if(data != uip_sappdata) {      memcpy(uip_sappdata, (data), uip_slen);    }  }}

C/C++ code
#define memcpy(dest, src, count) w_memcpy(dest, src, count)void *w_memcpy(void *out, const void *in, size_t n){  uint8_t *src, *dest;  src = (uint8_t *) in;  dest = (uint8_t *) out;  while(n-- > 0) {    *dest++ = *src++;  }  return out;}


但是如果我将字符串写到结构体中,则收到数据包的内容是乱码

C/C++ code
struct data{    char *a ;}data_raw;struct data *data_p;data_p = &data_raw;data_p->a = "Hello";uip_send((void *)data_p,5);


感觉这两种方式差不多了,怎么会出现这种情况呢?请教各位了!

[解决办法]
data_p的a指向哪里?
[解决办法]
char *a 表示char指针指向字符串 ''"hello"地址,但字符串是另一快空间,而结构体里面指针指针表示的是字符串地址的值;memcpy到data_p指向地址就是修改data_p->a 的值;并没有修改data_p->a指向的字符串的值。

热点排行