在C中的结构内部指定指针?

时间:2014-02-12 03:09:27

标签: c pointers struct

假设我有一个指针char *a

struct b {
unsigned short  num;
unsigned short  size;
unsigned char  *a;};

在这种情况下,如何将内容分配给'a'? 感谢。

5 个答案:

答案 0 :(得分:1)

声明struct b类型的变量,然后将a指向现有内存位置,或使用malloc为其分配内存

struct b buf;
buf.a = (unsigned char *)malloc(YOUR_SIZE_IN_BYTE);  // allocated memory for a
// fill content into a here

答案 1 :(得分:0)

取决于。您是否希望foo.a指向a的内容?然后:

struct b foo = ...;
foo.a = a;

或者您希望foo.a指向a的副本吗?然后:

struct b foo = ...;
foo.a = malloc(sizeof(char) * lengthOfA);
memcpy(foo.a, a, lengthOfA);

如果你有一个以空字符结尾的字符串,lengthOfAstrlen(a)

答案 2 :(得分:0)

我已动态分配内存并已分配到pointer a

#define EXAMPLE_SIZE 25
main ()
{
struct b sample= { 0, };
sample.a = malloc ( EXAMPLE_SIZE * sizeof (unsigned char) );    
}

答案 3 :(得分:0)

b obj;
unsigned char ch = 'F';
obj.a = &ch;

答案 4 :(得分:0)

您可以多种方式分配

1.动态分配内存(如果需要用户输入)

// you can use realloc also if you want

struct b t1 ;

b.a = malloc(x * sizeof (char) );

//then you can read user from input.

2。初始化可以使用字符串升级

struct b t2 = {0,4,"hey"};