嗅谱网

高级语言

  • C语言内存分配详解3

    C语言内存分配详解3

      下面以字符串为例比较指针与数组的特性。   3.1 修改内容   示例3-1中,字符数组a的容量是6个字符,其内容为hello。a的内容可以改变,如a[0]= ‘X’。指针p指向常量字符串"world"(位于静态存储区,内容为world),常量字符串的内 容是不可以被修改的。从语法上看,编译器并不觉得语句p[0]= ‘X’有什么不妥,但是该语句 企图修改常量字符串的内容而导致运行错误。 char a[] = "hello"; a[0] = ‘X’; cout < ...

    查看全文

  • C语言内存分配详解2

    C语言内存分配详解2

    堆和栈的区别可以用如下的比喻来看出: 使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必 理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。 使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。 堆和栈的区别主要分: 操作系统方面的堆和栈,如上面说的那些,不多说了。 还有就是数据结构方面的堆和栈,这些都是不同的概念。这里的堆实际上指的就是(满足堆性质 的)优先队列的一种数据结构,第1个元素有最高的优先权;栈实际上就是满足先进后出的性质 的数学或数据结构。 虽然堆栈,堆栈的说法是连起来叫, ...

    查看全文

  • C语言内存分配详解1

    C语言内存分配详解1

    1 堆和栈的区别 一、预备知识-程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)- 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方 式类似于数据结构中的栈。 2、堆区(heap) – 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注 意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3、全局区(静态区)(static)-,全局变量和静态变量的存储是放在一块的,初始化的全局变 量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 – 程序结束后有 ...

    查看全文

  • C语言指针的初始化和赋值

    C语言指针的初始化和赋值

    1、指针的初始化 初看起来,指针的初始化和赋值好像很混乱,又是*,又是&,时不时又出来一个数组。其实总结起来很简单: int *p; int a=25; int b[10]; int *m=&a; int *n=b; int *r=&b[0]; 指针的定义如上所示,以*打头的变量代表该变量为指针变量。 指针初始化时,”=”的右操作数必须为内存中数据的地址,不可以是变量,也不可以直接用整型地址值(但是int*p=0;除外,该语句表示指针为空)。此时,*p只是表示定义的是个指针变量,并没有间接取值的意思。 Int ...

    查看全文

  • C语言中extern关键字详解2

    C语言中extern关键字详解2

    (3) 在多个文件中声明外部结构体变量 前面一节中,只是适合一般变量的外部声明,但是对于声明外部结构体变量时,则有些不同,需要加以注意。 例子: 文件a.c的内容: #include <stdio.h> #include “b.h” #include “c.h” A_class local_post={1,2,3}; //全局变量 A_class next_post={10,9,8}; //全局变量 int main(int argc,char *argv[]) { A_class ret; print(&# ...

    查看全文

  • C语言中extern关键字详解1

    C语言中extern关键字详解1

    内容清单: 1. 用extern声明外部变量 (1)在一个文件内声明的外部变量 (2)在多个文件中声明外部变量 (3)在多个文件中声明外部结构体变量 2. 用extern声明外部函数 3. 总结 1. 用extern声明外部变量 定义:外部变量是指在函数或者文件外部定义的全局变量。外部变量定义必须在所有的函数之外,且只能定义一次。 (1) 在一个文件内声明的外部变量 作用域:如果在变量定义之前要使用该变量,则在用之前加extern声明变量,作用域扩展到从声明开始,到本文件结束。 例子: #include <stdio.h> int max(int x,i ...

    查看全文

  • typedef_struct与struct的区别

    typedef_struct与struct的区别

    typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。 至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。   1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个,一个是给变量 ...

    查看全文

  • C/C+语言struct深层探索

    C/C+语言struct深层探索

      面对一个人的大型C/C++程序时,只看其对struct的使用情况我们就可以对其编写者的编程经验进行评估。因为一个大型的C/C++程序,势必要涉及一些进行数据组合的结构体,这些结构体可将原本意义属于一个整体的数据组合在一起。从某种程度上来说,会不会用struct,怎样用struct是区别一个开发人员是否具备丰富开发经历的标志。   在网络协议、通信控制、嵌入式系统的C/C++编程中,我们经常要传送的不是简单的字节流(char型数组),而是多种数据组合起来的一个整体,其表现形式是一个结构体。   经验不足的开发人员往往将所有需要传送的内容依顺序保存在char型数组中,通过指针偏移的方法传送网 ...

    查看全文