运行代码时,计算机在想什么
- 计算机看到函数。
void fortune_cookie(char msg[]){ ...}
紧接着,计算机看到了函数的内容。 printf("Message reads: %s\n", msg);printf("msg occupies %i bytes\n", sizeof(msg));
计算机调用函数。 char quote[] = "Cookies make you fat";fortune_cookie(quote);
要点
数组变量可以被用作指针。
数组变量指向数组中第一个元素。
如果把函数参数声明为数组,它会被当作指针处理。
sizeof 运算符返回某条数据占用空间的大小。
也可以对某种数据类型使用 sizeof ,例如 sizeof(int) 。
sizeof (指针) 在 32 位操作系统中返回 4,在 64 位操作系统中返回 8。
这里没有蠢问题问:sizeof 是一个函数吗?答:不是,它是一个运算符。问:有什么区别?答:编译器会把运算符编译为一串指令;而当程序调用函数时,会跳到一段独立的代码中执行。问:所以程序是在编译期间计算 sizeof 的?答:没错,编译器可以在编译时确定存储空间的大小。问:为什么在不同的计算机上指针变量的大小不同?答:在 32 位操作系统中,存储器地址以 32 位数字的形式保存,所以它叫 32 位操作系统。32 位==4 字节,所以 64 位操作系统要用 8 个字节来保存地址。问:如果我创建了一个指针变量,它位于存储器中吗?答:是的,指针变量只不过是一个保存数字的变量罢了。问:我可以找到指针变量的地址吗?答:可以用& 运算符找到它的地址。问:我可以把指针转化为一般的数字吗?答:在大多数操作系统中,可以这样做。C 编译器通常会把 long 数据类型设为和存储器地址一样长。如果想要把指针 p 保存在 long 变量 a 中,可以输入 a=(long)p ,过几章我们会学习这种方法。问:是在大多数操作系统中吗?所以并不是全部?答:并不是全部。
三位钻石王老五准备参加今天的“非诚勿扰”。今晚的幸运女嘉宾将从三位选手中选出她的白马王子,她会选谁呢?
三位钻石王老五准备参加今天的“非诚勿扰”。今晚的幸运女嘉宾将从三位选手中选出她的白马王子,她会选谁呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论