
C语言
四阿哥漫步后花园
只有靠自己才靠得住!
展开
-
用sizeof和strlen分别求字符串长度辨析
请先看以下代码:#include#includeint main(){ char a[]={'h','e','l','l','o'}; char b[]="hello"; char c[]="he\0llo\0"; printf("strlen(a) = %d sizeof(a) = %d\n",strlen(a),sizeof(a)); printf("strlen原创 2014-12-15 18:02:36 · 1350 阅读 · 0 评论 -
C语言预编译概述
由“源代码”到“可执行文件”的过程包括四个步骤:预编译、编译、汇编、链接。所以,首先就应该清楚的首要问题就是:预编译只是对程序的文本起作用,换句话说就是,预编译阶段仅仅对源代码的单词进行变换,而不是对程序中的变量、函数等。 预编译指令的基本知识不作详细介绍,只稍作汇总,重点是后面的我能想到的 使用时的注意事项。1. 基本内容预编译指令基本分类如下转载 2014-12-12 21:38:55 · 855 阅读 · 0 评论 -
常量指针,指针常量,常量指针的指针常量
1,常量指针,即指向常量的指针。指针所指向的变量是个常量,这个常量不能被这个指针所改变#includeint main(){ int i=1,j=5; const int* a = &i; a=&j; //const int* a;是指a所指向的内存空间的值不能通过指针来 修改这个内存空间的值,转载 2014-12-12 21:38:21 · 862 阅读 · 0 评论 -
内联函数的优缺点
内联函数的优缺点说明:内联函数发生在程序的编译期间,多对于重复利用,程序执行又比较简短的,大大增大代码执行效率。优点:1)inline定义的内联函数,函数代码被放入符号表中,在使用时进行替换(像宏一样展开),效率很高2)类的内联函数也是函数。编绎器在调用一个内联函数,首先会检查参数问题,保证调用正确,像对待真正函数一样,消除了隐患及局限性。原创 2014-12-10 11:48:25 · 8017 阅读 · 0 评论 -
函数传递参数的三种方式,以及它们的区别
函数传递参数的三种方式,以及它们的区别1.按值传递(pass by value)使用这种方式,调用函数本省不对实参进行操作,也就是说,即使形参的值在函数中发生了变化,实参的值也完全不会受到影响,仍为调用前的值。这相当于把实参赋值一份给形参,然后调用后内存回收。#includeint sum(int x,int y){ return x+y;}in原创 2014-12-10 11:18:38 · 14582 阅读 · 1 评论 -
字符串问题及关于字符串的函数
字符串问题及关于字符串的函数1,char* strcpy(char* dest, char* src);把src指向的以NULL结束的字符串复制到dest所指的数组中。函数返回指向dest指针。 注:1,接收字符串的数组或指针所指的内存区域一定要大于被复制的字符串长度, 否则系统可能由于字符长度不够而被恶意修改。 2,dest原创 2014-12-09 23:26:59 · 908 阅读 · 0 评论 -
指针函数和值传递
1.一个指针函数中,是不能返回局部变量的地址的,有时候可能会是正确的结果,那是因为你只运行了一个程序,那个内存空间还没有被其他程序所占用,当你运行多个程序的,返回的可能是一个别的程序的数值。int* mistake(){ int a=45; return &a;//这种写法是错误的,不能返回局部变量地址}int main(){ int* p= N原创 2014-12-09 11:01:23 · 932 阅读 · 0 评论 -
指针和指针的作用
*号的意义:1.在指针声明中,*号表示声明的变量为指针2.在指针使用时,*号表示取指针所指向的内存中的值。用指针传值和普通传值进行数值交换区别。用指针进行值交换,指针操作地址单元里面的数值可以直接改变里面的内容而普通的数值传递只是把需要交换的数值进行复制然后让复制的数值进行交换,当在主函数运行时,输出的仍是原来空间的数值,而复制的数值交换后的内存被计算机回收一原创 2014-12-09 10:59:21 · 1747 阅读 · 0 评论 -
指向常量的指针用法和注意事项
指向常量的指针(point to const):不能通过指针对变量进行修改,但该指针可以指向其他地方。const int* p=&a; 最常用。下面通过一个例子进行说明:#include//void wrong(const char* str);void correct(const char* str);int main(){//wron原创 2014-12-09 10:53:54 · 744 阅读 · 0 评论 -
堆和栈的区别
栈(操作系统):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈 栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。 堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收原创 2014-12-08 17:27:25 · 488 阅读 · 0 评论 -
malloc 和free()函数的用法:
1.说明:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新重新标记可用。2.注意事项1、申请了内存空间后,必须检查是否分配成功。原创 2014-12-08 17:19:03 · 716 阅读 · 0 评论 -
数组和指针地址移动问题
请看以下代码:#include#includeint main(){ int a[5]={1,2,3,4,5}; int* p=a; printf("\ta[1]的地址为:%d \n\ta[4]的地址为:%d\n",&a[0],&a[4]); printf("\t(p+1)的地址为:%d\n",&p);//指针p指向是指针a的地址,所有才比a[0]少4个字节。 printf(原创 2014-12-16 12:45:24 · 4116 阅读 · 1 评论 -
指针和数组
1,指针就是指针,指针变量在32位系统下,占4个字节,其值为某 个内存的地址。可以指向任何地 方。2,数组就是数组,其大小与元素的类型和个数有关;定义数组时,必须指定元素的类型个元素的个数; 数组可以存放任何数据类型,但不可以存放函数。 3,它们之间没有任何的关系,只是穿着相似的衣服来逗你玩罢了。 4,以指针的形式访问指针和以下标的形式访问指针原创 2014-12-09 23:37:05 · 884 阅读 · 0 评论 -
链表的基本操作之_增删改查
*****end*******原创 2015-04-20 19:28:13 · 3461 阅读 · 0 评论