C语言编程
enchen
这个作者很懒,什么都没留下…
展开
-
指针的慨念(1)
指针的基本概念 在计算机中,所有的数据都是存放在存储器中的。 一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等, 在第二章中已有详细的介绍。为了正确地访问这些内存单元,必须为每个内存单元编上号。 根据一个内存单元的编号即可准确地找到该内存单转载 2008-03-03 22:26:00 · 431 阅读 · 0 评论 -
程序运行时,结构体的内存分配,大讨论。。。
十分疑惑: 定义一个结构体 typedef struct example { int a;转载 2008-03-06 20:24:00 · 1069 阅读 · 0 评论 -
内存分配深入探讨
摘要:内存管理向来是C/C++程序设计的一块雷区,大家都不怎么愿意去碰她,但是有时不得不碰它。虽然利用C++中的smart pointer已经可以完全避免使用指针,但是对于对于指针的进一步了解,有助于我们编写出更有效率的代码,也有助于我们读懂以前编写的程序。 五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈转载 2008-03-06 20:09:00 · 418 阅读 · 0 评论 -
链表几种常用操作回顾
============== 链表几种常用操作回顾 ==================//***********************************//** 链表各种操作回顾 ** //***********************************#include //-----------------------------------转载 2008-03-05 16:31:00 · 618 阅读 · 0 评论 -
c/c++中结构体(struct)知识点强化,链表的学习
在上一个教程中我们已经简单的阐述了什么是结构体了,为了进一部的学习结构体这一重要的知识点,我们今天来学习一下链表结构。 结构体可以看做是一种自定义的数据类型,它还有一个很重要的特性,就是结构体可以相互嵌套使用,但也是有条件的,结构体可以包含结构体指针,但绝对不能在结构体中包含结构体变量。 struct test { char name[10]; float socre; test *next; }转载 2008-03-05 17:01:00 · 878 阅读 · 0 评论 -
详细解析C语言中的sizeof
一、sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 二、sizeof的使用方法 1、用于数据类型 sizeof使用形式:sizeof(type) 数据类型必须用括转载 2008-03-07 17:36:00 · 586 阅读 · 0 评论 -
编程导学之C/C++中命令行参数的原理
早以前的dos应用程序中,我们经常会用命令行参数执行应用程序例如: copy c:/1.txt d:/ 在c/c++中,命令行参数的传递是利用main进行形参传递实现的 前面的教程中我们对面都进行了void main()或者转载 2008-03-05 14:27:00 · 470 阅读 · 0 评论 -
c/c++数组排序、计算平均值、最大、小值
最近在帮助其它人的学习中发现了许多问题就数组和局部变量和全居变量的两道例题进行刨析和思考! 排序操作 #include voidsort(array,n) intarray[]; intn; { inti,j,k,t; for(i=0;i)/* 循环9次,这里循环9转载 2008-03-05 14:30:00 · 2012 阅读 · 0 评论 -
C/C++语言void及void指针深层探索
1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 void几乎只有“注释”和限制程序的作用,因为从来没有人会转载 2008-03-05 14:31:00 · 367 阅读 · 0 评论 -
浅谈内存泄漏
对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题,比如Smart Pointer,Garbage Collection等。Smart Pointer技术比较成熟,STL中已经包含支持Smart Pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题;Garbage Collection技术在J转载 2008-03-06 20:57:00 · 381 阅读 · 0 评论 -
Linux编程C++内存管理之内存分配详解
程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。 内存分配方式 内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 (2)在栈上创转载 2008-03-06 20:11:00 · 512 阅读 · 0 评论 -
c/c++中结构体的入门教程
什么是结构体? 简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的, 因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了转载 2008-03-05 17:10:00 · 485 阅读 · 0 评论 -
指针的慨念(2)
(2)加减算术运算 对于指向数组的指针变量,可以加上或减去一个整数n。设pa是指向数组a的指针变量,则pa+n,pa-n,pa++,++pa,pa--,--pa 运算都是合法的。指针变量加或减一个整数n的意义是把指针指向的当前位置(指向某数组元素)向前或向后移动n个位置。应该注意,数组指针变量向前或向后移动一个位置和地址加1或减1 在概念上是不同的。因为数组转载 2008-03-03 22:52:00 · 795 阅读 · 0 评论 -
C语言设计初学者的十八颗“地雷”
C语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活 给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起,本人通过对C的学 习,积累了一些C编程时常犯的错误,写给各位学员以供参考。 1转载 2008-03-03 17:31:00 · 403 阅读 · 0 评论 -
C语言基础知识,看你掌握了没有?
常量和变量1.常 量: 程序执行过程中,值不变的量。 3 ,a 变 量:值可以改变的量。 一个变量有一个名字,在内存中有一定的存储单元,存放变量的值。2.常量类型: a.整 型:12,0,-3 b.实 型:4.6,-1.2 c.字 符 型: a,d d.符号常量: #define PRICE 30 (PRICE不能再被赋值且要大写)转载 2008-03-03 17:33:00 · 898 阅读 · 0 评论 -
多维数组的指针变量
一、多维数组地址的表示方法 设有整型二维数组a[3][4]如下: 0 1 2 3 4 5 6 7 8 9 10 11 设数组a的首地址为1000,各下标变量的首地址及其值如图所示。 在前面曾经介绍过, C语言允许把一个二维数组分解为多个一维数组来处理。因此数组a可分解为三个一维数组,即a[0],a[1],a[2]。每一个一维数组又转载 2008-03-03 22:55:00 · 505 阅读 · 0 评论 -
深入理解C语言指针的奥秘
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: (1)int*ptr; (2)char*ptr; (3)int**ptr; (4)int(*ptr)[转载 2008-03-05 14:10:00 · 576 阅读 · 0 评论 -
教你理解复杂的C/C++声明
曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C++声明。 我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef,还有函数指针,最后介绍一个能够让你准确地理解任何C/C++声明的“右左法则”。 需要强调一下的是,复杂的C/C++声明并不转载 2008-03-05 14:33:00 · 315 阅读 · 0 评论 -
链表的C语言实现基础介绍
链表的C语言实现之动态内存分配 一、为什么用动态内存分配 但我们未学习链表的时候,如果要存储数量比较多的同类型或同结构的数据的时候,总是使用一个数组。比如说我们要存储一个班级学生的某科分数,总是定义一个float型(存在0.5分)数组:float score[30]; 但是,在使用数组的时候,总有一个问题困扰着我们:数组应该有多大? 在很多的情况下,你并不能确定要使用多大的数组,比如上转载 2008-03-05 16:24:00 · 1078 阅读 · 1 评论 -
链表的C语言实现之循环链表及双向链表
一、循环链表 循环链表是与单链表一样,是一种链式的存储结构,所不同的是,循环链表的最后一个结点的指针是指向该循环链表的第一个结点或者表头结点,从而构成一个环形的链。 循环链表的运算与单链表的运算基本一致。所不同的有以下几点: 1、在建立一个循环链表时,必须使其最后一个结点的指针指向表头结点,而不是象单链表那样置为NULL。此种情况还使用于在最后一个结点后插入一个新的结点。 2、在判断是否转载 2008-03-05 16:40:00 · 445 阅读 · 0 评论 -
C链表重构
/*这次重写主要是为了增加结构的通用性、为了照顾初学的朋友我保 *留原来的代码,那个看起来更容易被初学者理解.代码中的mian函数 *只是简单的测试,大家可以根据需要自行修改.*/ ————————————————lis.h—————————————— #ifndef LIST_H #define LIST_H /*定义函数状态*/ #ifndef OK #define ERR -转载 2008-03-05 16:44:00 · 482 阅读 · 0 评论 -
fseek与ftell函数
fseek函数是 用来设定文件的当前读写位置.函数原型: int fseek(FILE *fp,long offset,int origin);函数功能:把fp的文件读写位置指针移到指定的位置.fseek(fp,20,SEEK_SET); 意思是把fp文件读写位置指针从文件开始后移20个字节. ftell函数是用来获取文件的当前读写位置;函数原型: long ftell转载 2009-03-18 16:27:00 · 978 阅读 · 0 评论