- 论坛徽章:
- 14
|
因为函数的参数是“传值”的
assign(aaa,bbb,ss); 是将aaa的值复制一份给assign的参数a,无论你对a进行什么操作,aaa都不会变化。
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct {
- const char* a;
- const char* b;
- } twostr;
- twostr* twostr_alloc( const char* a, const char* b )
- {
- twostr* p = malloc( sizeof(*p) );
- p->a = a;
- p->b = b;
- return p;
- }
- void twostr_free( twostr** pp )
- {
- free( *pp );
- *pp = NULL; // 我个人鄙视free后设NULL的这种行为
- }
- void twostr_getvalue( twostr** pp, const char** pa, const char** pb )
- {
- *pa = (*pp)->a;
- *pb = (*pp)->b;
- twostr_free( pp );
- }
- int main( void )
- {
- twostr* p = twostr_alloc( "ab", "cd" );
- const char *a, *b;
- twostr_getvalue( &p, &a, &b );
- puts( a );
- puts( b );
- }
复制代码 |
评分
-
查看全部评分
|