C语言中变量何时分配空间?
编译器为gcc
现象一:
这三段代码输出结果怎么解释?
为什么前面两次输出的地址会一样?
现象二:
这两段代码结果怎么解释?
从a,b的值交换了可以看出a,b的地址交换了?为什么a,b的地址会交换呢?
现象三:
这两段代码结果怎么解释
这两次b的地址为什么变了呢?
现象一:
这三段代码输出结果怎么解释?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int b ;
int a ;
printf("%x\n",&a); //只输出a的地址,本人机器上为61FE1C
system("pause");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int b ;
int a ;
printf("%x\n",&b); //只输出b的地址,本人机器上也为61FE1C
system("pause");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int b ;
int a ;
printf("%x\t%x\n",&a,&b); //同时输出a,b的地址,本人机器上为61FE18 61FE1C
system("pause");
return 0;
}
为什么前面两次输出的地址会一样?
现象二:
这两段代码结果怎么解释?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int b;
int a;
printf("a = %d\n",a); //输出a = 16
printf("b = %d\n",b); //输出b = 0
printf("%X\n",&a); //a的地址为61FE18
system("pause");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int b;
int a;
printf("a = %d\n",a); //输出a = 0
printf("b = %d\n",b); //输出b = 16
printf("%X\n",&b); //b的地址也为61FE18
system("pause");
return 0;
}
从a,b的值交换了可以看出a,b的地址交换了?为什么a,b的地址会交换呢?
现象三:
这两段代码结果怎么解释
#include <stdio.h>
#include <stdlib.h>
int main()
{
int b = 10000;
int a ;
printf("%X\n",&b); //b的地址是 61FE1C
system("pause");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int b = 10000;
int a ;
printf("a = %d\n",a);
printf("%X\n",&b); //b的地址是 61FE18
system("pause");
return 0;
}
这两次b的地址为什么变了呢?
...全文
相关推荐
嵌入式LinuxC语言面试试题1.pdf
一、 ANSI C/C++ 方面的知识1. 在C语言中,如何初始化一个字符数组?答:可以使用字符数组的初始化方式,如char str[] = "hello";2. 如何在C语言中为一个数组分配空间?
C 语言常见问题集_C语言_
以下是一些C语言常见问题及其详细解答:1. **变量声明与初始化** - **问题**:何时应该声明变量?变量可以在程序的任何位置声明,但最好在使用前声明。
嵌入式linux工程师面试题目C语言基础部分文档1.pdf
如何在C中为一个数组分配空间?
C语言笔试 题
**如何在C中为一个数组分配空间** - 可以使用`malloc`函数来动态分配内存: ```c int *arr = (int *)malloc(10 * sizeof(int)); ``` - 上面的代码分配了足够存储
嵌入式Linux C语言面试试题1.pdf
如何在C中为一个数组分配空间?知识点:在C语言中,可以使用malloc函数或calloc函数来为数组分配空间。


