2009-2-5 17:48:57 阅读93 评论0 52009/02 Feb5
sizeof()功能:计算数据空间的字节数
1.与strlen()比较
strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。
而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。
2.指针与静态数组的sizeof操作
指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为4。
注意:int *p; sizeof(p)=4;
2009-2-5 17:18:27 阅读113 评论0 52009/02 Feb5
1.sizeof是操作符(operator),strlen是函数。
2.因为sizeof是operator,所以sizeof后面如果是类型,必须加括号,如果是变量名可以不加括号。
3.sizeof操作符的结果类型是size_t(被typedef为unsigned int类型)。
4.sizeof可以用类型做参数,strlen只能用char *类型的变量作为参数,并且必须以“\0”结尾。strlen计算字符串的长度,一直到遇到“\0”为止。
5.数组作为sizeof的参数不退化,传递给strlen就退化为指针。
2009-2-4 10:58:49 阅读88 评论0 42009/02 Feb4
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。
用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。
没有用volatile关键字声明的变量i在被访问的时候可能直接从cpu的寄存器中取值(因为之前i被访问过,也就是说之前就从内存中取出i的值 保存到某个寄存器中),之所以直接从寄存器中取值,而不去内存中取值,是因为编译器优化代码的结果(访问cpu寄存器比访问ram快的多)。
以上两种情况的区别在于被编译成汇编代码之后,两者是不一样的。之所以这样做是因为变量i可能会经常变化,保证对特殊地址的稳定访问。
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改
2009-1-4 17:56:07 阅读148 评论0 42009/01 Jan4
例10-6:分析程序的运行过程和结果。
#include <stdio.h>
main
2008-12-29 11:58:18 阅读81 评论0 292008/12 Dec29
用static声明的函数和变量小结
static 声明的变量在C语言中有两方面的特征:
1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。
2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。
Tips:
A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;