Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中的结构中指定指针?_C_Pointers_Struct - Fatal编程技术网

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

在C中的结构中指定指针?,c,pointers,struct,C,Pointers,Struct,假设我有一个指针char*a #define EXAMPLE_SIZE 25 main () { struct b sample= { 0, }; sample.a = malloc ( EXAMPLE_SIZE * sizeof (unsigned char) ); } 及 在这种情况下,我应该如何将内容分配给“a”? 谢谢。视情况而定。您想让foo.a指向a的功能吗?然后: struct b foo = ...; foo.a = a; 还是希望foo.a指向a的副本?然后: st

假设我有一个指针
char*a

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

在这种情况下,我应该如何将内容分配给“a”?
谢谢。

视情况而定。您想让
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);

其中
lengthOfA
strlen(a)
,如果您有一个以null结尾的字符串。

我动态分配了内存并分配给
指针a

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

声明
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.动态分配内存(如果需要用户输入)

二,。而初始化可以使用字符串字符串

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

它取决于结构b的含义。
// you can use realloc also if you want

struct b t1 ;

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

//then you can read user from input.
struct b t2 = {0,4,"hey"};