Advertisement

C语言中数组和指针的定义和声明不一致会有什么影响?

阅读量:

以下陈述内容源自某一原始文件:

复制代码
 int a[10];

    
 int *b = a;
    
    
    
    
    AI写代码cpp

然而,在另一份源文件中,却出现了如下所示的代码:

复制代码
 extern int *a;

    
 extern int b[];
    
 int x,y;
    
 ...
    
 x = a[3];
    
 y = b[3];
    
    
    
    

请说明,当执行两条赋值语句时,系统将如何响应?(假设整型变量与指针类型的存储空间均为4个字节。)


int a[10];
int *b = a;

extern int *a;
extern int b[];

其中声明方式与定义方式存在差异。

接下来可以观察程序运行后的实际输出结果:

复制代码
 //file: a.c

    
  
    
 int a[10] = {1,2,3,4,5,6,7,8,9,10};
    
 int *b =  a;
    
  
    
 void test() {
    
     printf("a: 0x%x\n", a);
    
  

全部评论 (0)

还没有任何评论哟~