指针,数组和指向方法的指针

ran*_*its 1 c pointers

这里的问题很困惑.C的新功能,如下例所示:

#include <stdlib.h>
#include <stdio.h>

void pass_char_ref(unsigned char*);

int main()
{
  unsigned char bar[6];

  pass_char_ref(&bar);

  printf("str: %s", bar);

  return 0;
}

void pass_char_ref(unsigned char *foo)
{
  foo = "hello";
}
Run Code Online (Sandbox Code Playgroud)

据我所知,bar是一个无符号字符数组,在静态存储中将元素大小设置为6.我只想通过引用pass_char_ref()传递bar并在该函数中设置字符数组,然后将其打印回main().

小智 7

您需要将字符串复制到数组中:

void pass_char_ref(unsigned char *foo) 
{ 
  strcpy( foo, "hello" ); 
} 
Run Code Online (Sandbox Code Playgroud)

然后在调用函数时,只需使用数组的名称:

pass_char_ref( bar );
Run Code Online (Sandbox Code Playgroud)

此外,该阵列不在"静态存储"中; 它是一个自动对象,在堆栈​​上创建,具有包含函数调用的生命周期.