c - 绘制执行代码图

标签 c

考虑以下代码行:

char a = 'a';
char b = 'b';
int ai[] = { 1, 2 };
int i = 0;

假设字长是 32 位,一个 int 是 32 位,并且 内存分配的顺序与 从地址位置 68 开始的声明。

画出效果图 执行以下代码行。

 for (i = 0; i < 8; i++)
 *(&a – i) = 'z';

所以我很不确定它对我的期望是什么。我最初的猜测是它循环遍历并且基本上执行 a-1,a-2.....,a-8 使每个值等于字符 Z。所以该图基本上是 8 个对象都指向 Z 每个具有相同的地址为 Z。我不确定这是对还是错得离谱。谁能解释一下。仅供引用,这是一份过去的试卷,为期末练习,而不是考试作业!

最佳答案

你不能保证它是如何工作的,因为它取决于 C 编译器如何安排。但是,您可以轻松地确定特定 C 编译器是如何执行此操作的。假设是gcc,用-g编译,然后在gdb下运行程序。使用 print 打印变量(或使用 print &x 打印变量地址),使用 x 检查内存。

关于c - 绘制执行代码图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27951447/

相关文章:

c++ - 将另一个数组中的随机元素复制到数组中的最快方法 C++

c - SetWindowLongPtr() 如何传递消息?

c - sdl2 SDL_Quit() 段错误

c - 在选择中响应 ICMP

c - 一旦超过时间限制就终止进程

java - 如何查找两个数字是否是格雷码序列中的连续数字

c - 如何保护基于 C 的库的 init 函数?

c++ - libssh 不返回命令结果

java 创建原始数据包 tcp/icmp

c++ - 如何用 C 语言实现基于 xml 的结构化语言的解析器?