1. sizeof 是关键词不是函数,可以这么写:sizeof(int)/sizeof(i)/sizeof i,但不能这么写sizeof int!“size(int) * p”表示什么意思呢?sizeof(int) = 4,所以是“4*p”!
留个问题:以下代码运行,先后打印什么呢?
#include
void fun(int a[100])
{
printf("\n\nIn the fun function!\n\n");
printf("sizeof(a) = %d.\n", sizeof(a)); //care about this one
printf("sizeof(a[100]) = %d.\n", sizeof(a[100]));
printf("sizeof(&a) = %d.\n", sizeof(&a));
printf("sizeof(&a[100]) = %d.\n", sizeof(&a[100]));
}
int main(int argc, char *argv[])
{
char *p = NULL;
int a[100];
printf("sizeof p = %d.\n", sizeof p);
printf("sizeof *p = %d.\n", sizeof *p);
printf("sizeof(a) = %d.\n", sizeof(a)); //care about this one
printf("sizeof(a[100]) = %d.\n", sizeof(a[100]));
printf("sizeof(&a) = %d.\n", sizeof(&a));
printf("sizeof(&a[100]) = %d.\n", sizeof(&a[100]));
fun(a);
return 0;
}
第一句:当sizeof操作的是一个结构体或者变量时,返回值为它的实际大小,这个实际大小可能包括为了字节对齐插入的多余字节。如main函数里第三个打印出"sizeof(a) = 400.";
第二句:如果操作的是一个静态大小的数组,返回整个数组的大小;
第三句:如果操作数是函数中的数组形参或函数类型的形参,sizeof给出其指针的大小。如fun()函数中打印出"sizeof(a) = 4.";
第四句:sizeof操作符不能返回动态开辟的数组或形参数组的大小。
2. 定义与声明的区别:创建了对象并为对象分配了内存是定义;只创建了对象未分配内存是声明。
3. for循环的初始化声明只在C99下允许。即for(int k = 0; k < 10; k++)这样的写法,只在C99模式下被允许。
4. strlen()函数。如下源码,输出是多少呢?
#include
#include
int main(int argc, char *argv[])
{
char a[1000];
int i;
for(i = 0; i < 1000; i++)
a[i] = -i - 1;
printf("sizeof(a) = %d.\n", strlen(a));
return 0;
}
注:strlen()函数用于计算字符串长度,判断字符串是否结束的标志是是否遇到‘\0',如果遇到,则认为本字符串结束。分析到此,应该猜到打印出的结果是“sizeof(a) = 255.”了。
5. void:void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量。
void真正发挥的作用在于:
(1)对函数返回的限定;
(2)对函数参数的限定。
void关键字的使用规则:
规则一 如果函数没有返回值,那么应声明为void类型
在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。但是许多程序员却误以为其为void类型。
规则二 如果函数无参数,那么应声明其参数为void
规则三 小心使用void指针类型
规则四 如果函数的参数可以是任意类型指针,那么应声明其参数为void *
规则五 void不能代表一个真实的变量
C语言深度剖析
相关推荐
c语言深度剖析 c语言深度剖析 c语言深度剖析 c语言深度剖析
C语言深度剖析 -------------------解开程序员面试笔试的秘密
C非常不错的语言深度剖析,适合有一定基础的C语言爱好者阅读
C语言深度剖析 pdf+源代码 你懂的 我遇到过很多程序员和计算机系毕业的学生,也给很多程序员和计算机系毕业的学生讲 解过《高级C 语言程序设计》。每期班开课前,我总会问学生:你感觉C 语言学得怎么样? 难吗?指针...
[C语言深度剖析.-.解开程序员面试笔试的秘密].陈正冲.石虎.文字版,很难找的资源,分享给大家
C语言深度剖析视频教程,里面附视频连接,密码!
讲述了c语言基础知识,对内存管理这片雷区做了深度的讲解,对函数的使用也进行了详细的阐述。
[C语言深度剖析.-.解开程序员面试笔试的秘密].陈正冲.石虎.文字版.pdf[C语言深度剖析.-.解开程序员面试笔试的秘密].陈正冲.石虎.文字版.pdf
C语言深度剖析 经典国内书籍, 研究C语言必备
C语言深度剖析 C语言深度剖析 C语言深度剖析 C语言深度剖析 C语言深度剖析 C语言深度剖析 C语言深度剖析
c语言深度剖析,内容讲的很不错。可以看看
解开程序员面试笔试的秘密 C语言深度剖析.-.解开程序员面试笔试的秘密
c语言深度剖析剖析剖析c语言深度剖析剖析剖析c语言深度剖析剖析剖析
C语言深度剖析C语言深度剖析C语言深度剖析C语言深度剖析C语言深度剖析C语言深度剖析C语言深度剖析C语言深度剖析C语言深度剖析C语言深度剖析C语言深度剖析C语言深度剖析
一本很好的C语言深度剖析书籍,通读之后自己整理的思维导图
C语言深度剖析 ,完美解析C语言的各种易错点,适合毕业生笔试面试前使用。
C语言深度剖析,在C基础上更加深入了解C语言的内容,让读者更加深入掌握C语言