功能中的绑定与功能之外的差异

时间:2017-02-28 05:30:37

标签: c variables binding

首先,我这样编码。但这会得到错误。

#include <stdio.h>
int array[2][4]={1,2,3,4,5,8,9,0};
int (*p)[4]=NULL;
p=array;
int main(){

  int j;
  for(j=0;j<4;j++){
    printf("%d",p[1][j]);
    printf("\n");
  }
  return 0;
}

之后我修改我的代码。 我只是把p =数组;进入int main()

#include <stdio.h>
int array[2][4]={1,2,3,4,5,8,9,0};
int (*p)[4]=NULL;

int main(){
  p=array;
  int j;
  for(j=0;j<4;j++){
    printf("%d",p[1][j]);
    printf("\n");
  }
  return 0;
}

为什么他们有不同的操作?

3 个答案:

答案 0 :(得分:2)

p=array;语句是赋值语句,必须在函数内执行。

答案 1 :(得分:0)

在此声明并定义全局变量

int (*p)[4]=NULL;

然后执行代码(在任何函数之外禁止)

p=array;

相反,你可以这样做

int (*p)[4]=array;

或明确声明和定义如下

int (*p)[4];
int (*p)[4] = array;

答案 2 :(得分:0)

p=array

是一个无法在函数外执行的赋值语句。 因为声明应该可以在函数内部(本地声明)或函数外部(全局声明)中完成,但是赋值应该只在函数内完成。

虽然同时进行声明和分配可以在全球范围内完成(例如在您的代码中):

int array[2][4]={1,2,3,4,5,8,9,0};
int (*p)[4]=NULL;