C语言函数传递参数有关问题
C语言函数传递参数问题
请看如下代码:
函数原型:
数据结构:
现象描述:
在某处调用,如果直接把 arry[i].name.buffer 传递给 mxmlNewElement 函数,会崩溃!!
而采用 下面代码中——被注释的 那两行的 做法时,不会崩溃!!
疑问:
函数参数是值传递的,直接传递 arry[i].name.buffer, 和 先 char *p= arry[i].name.buffer 、再传递 p,为何会导致不同的结果?
请解释一下原因,谢谢!
补充一下:
如果加入语句: printf("%s\n", arry[i].name.buffer); 将输出 “Name”
------解决思路----------------------
而采用 下面代码中——被注释的 那两行的 做法时,不会崩溃!!
会不会是凑巧,楼主,arry[i].name.buffer指向的空间是什么
这样会不会崩溃
char *p = NULL; //作用是多占点栈表空间
name = mxmlNewElement(table_belong, arry[i].name.buffer);
------解决思路----------------------
结构体中的buffer只是一个指针,需要申请类存
------解决思路----------------------
这个我觉得可能是,有时候指针越界访问,如果其非法访问的地址在该程序开辟的内存区,且是可写属性,就不会报错,因为在自家院里搞破坏,不影响别人,别人也不会报警,但比较危险
------解决思路----------------------
你只是调试找错了地方,这很正常啊,
一眼看出问题,就不用调试了
加油吧
请看如下代码:
函数原型:
mxml_node_t *mxmlNewElement (
mxml_node_t *parent,
const char *name
);
数据结构:
typedef struct _config_entry_data_t {
config_entry_data_type_e type;
char *buffer;
int len;
} config_entry_data_t;
typedef struct _config_entry_t {
config_entry_data_t name;
//省略....
} config_entry_t;
现象描述:
在某处调用,如果直接把 arry[i].name.buffer 传递给 mxmlNewElement 函数,会崩溃!!
而采用 下面代码中——被注释的 那两行的 做法时,不会崩溃!!
// char *p = arry[i].name.buffer;
// name = mxmlNewElement(table_belong, p);
name = mxmlNewElement(table_belong, arry[i].name.buffer);
疑问:
函数参数是值传递的,直接传递 arry[i].name.buffer, 和 先 char *p= arry[i].name.buffer 、再传递 p,为何会导致不同的结果?
请解释一下原因,谢谢!
补充一下:
如果加入语句: printf("%s\n", arry[i].name.buffer); 将输出 “Name”
------解决思路----------------------
而采用 下面代码中——被注释的 那两行的 做法时,不会崩溃!!
会不会是凑巧,楼主,arry[i].name.buffer指向的空间是什么
这样会不会崩溃
char *p = NULL; //作用是多占点栈表空间
name = mxmlNewElement(table_belong, arry[i].name.buffer);
------解决思路----------------------
结构体中的buffer只是一个指针,需要申请类存
------解决思路----------------------
这个我觉得可能是,有时候指针越界访问,如果其非法访问的地址在该程序开辟的内存区,且是可写属性,就不会报错,因为在自家院里搞破坏,不影响别人,别人也不会报警,但比较危险
------解决思路----------------------
你只是调试找错了地方,这很正常啊,
一眼看出问题,就不用调试了
加油吧