1.【exit()】
exit是在调用处强行退出程序,运行一次程序就结束。exit(0)表示正常退出。exit(1)表示异常退出,这个1是返回给操作系统的。无论是写在main函数中,还是在其他函数中,都是程序退出。一般都是认为0是正常退出、其他数字是异常退出。所在的头文件是stdlib.h. 返回值的意义其实同main函数中的return一样,零表示正常,非零表示异常。
2.【memset】
函数的声明为:memset(void *, int, size_t n)。功能是将void *所指向的某一块内存(大小由size_t指定,可以使用sizeof函数计算)中的首n个字节的内容全部设置为int值。这个函数通常为新申请的内存做初始化工作。而如果是在链表中,当我们申请一个新的节点,也会使用这个函数来初始化这个节点。示例代码如下:
#include "stdio.h" #include "string.h" int main(int argc,const char* argv[]){ char str[] = "abcde"; printf("%s\n",str); memset(str, 0, strlen(str)); printf("%s\n",str); return 0; }
打印结果如下:
。
可以看到其实是把数组置空了,而不是把数组里面的元素每个置为0.
#include "stdio.h" #include "string.h" int main(int argc,const char* argv[]){ char str[] = "abcde"; printf("%s\n",str); memset(str, ‘0‘, strlen(str)); printf("%s\n",str); return 0; }
打印结果如下:
。
在这里是把数组中的元素都替换为字符‘0’。
【3.malloc】
需要包含头文件stdlib.h。函数声明为 void *malloc(int size). malloc向系统申请分配size个字节的内存空间。返回类型为void *类型。void*表示未确定类型的指针。可以强制转换为任何其他类型的指针,如果不进行类型转换就会报错。malloc只是进行分配内存,并没有对内存进行初始化,所以得到的一片新内存中,值将是随机的。
示例代码如下:
#include "stdio.h" #include "string.h" #include "stdlib.h" int main(int argc,const char* argv[]){ char *p; p = (char *)malloc(sizeof(char)); if(p) printf("内存分配地址: 0x%x\n",p); else printf("分配内存失败!\n"); free(p); return 0; }
打印结果如下:
。
上面的代码中我其实只是分配了一个char字符的空间。如果想要n个字符,直接如下:(char *)malloc(n * sizeof(char))即可。
【4.sizeof】
计算空间的字节数。可以对数据类型、变量进行计算。实际上,sizeof计算对象的大小也是转换成对其对象类型的计算。也就是说,同种类型的不同对象其sizeof值都是一致的。示例代码如下:
#include "stdio.h" #include "string.h" #include "stdlib.h" int main(int argc,const char* argv[]){ int a[10]; //因为每个int型占用4个字节 printf("数组占用字节:%d\n",sizeof(a)); printf("char占用字节:%d,int占用字节:%d,double占用字节:%d\n",sizeof(char),sizeof(int),sizeof(double)); int *p; //可以看到,在这里一个指针占8个字节 printf("指针占用字节:%d\n",sizeof(p)); char *str1 = "abcde"; //这里打印的也是一个指针,注意char是我们编程能用的最小数据类型 printf("字符串1占用字节 :%d\n",sizeof(str1)); char str2[] = "iiii"; //这里打印数组的长度 printf("字符串2占用字节:%d\n",sizeof(str2)); return 0; }
打印结果如下:
。