关于在C中使用存储类

Cha*_*mar -1 c

如果函数的参数的int *check(register int,register int);存储类声明为其他存储类,则以下代码显示错误.

我使用GNU GCC CompilerCode :: Blocks 10.05 IDE上编译了这段代码.错误背后的原因是什么?它是编译器特定的错误还是一般错误?代码部分从这里开始:

int *check(register int, register int);

int main()
{
  int *c;
  c = check(10, 20);
  printf("%d\n", c);
  return 0;
}

int *check(register int i,register int j)
{
  int *p = i;
  int *q = j;
  if(i >= 45)
    return (p);
  else
    return (q);
}
Run Code Online (Sandbox Code Playgroud)

Yu *_*Hao 5

int *check(register int i,register int j)
{   
    int *p=i;
    int *q=j;
Run Code Online (Sandbox Code Playgroud)

键入的错配p qi j.也许你想要的是:

int *check(int i, int j)
{   
    int *p=&i;
    int *q=&j;
Run Code Online (Sandbox Code Playgroud)

更正:注意register不能使用&.此外,关键字的register用法很少,因为编译器通常会忽略它并进行优化.

  • 这将返回指向局部变量的指针.而且我相信你不能取一个`register`变量的地址. (4认同)