#野指针

《征服 C 指针》笔记6:练习——挑战那些复杂的声明

应该是小试牛刀的时候了。在ANSIC的标准库中,有一个atexit()函数。如果使用这个函数,当程序正常结束的时候,可以回调一个指定的函数。atexit()的原型定义如下:intatexit(void(*func)(void));1、首先着眼于标识符。intatexit(void(*func)(void));英语的表达...

《征服 C 指针》摘录5:函数形参 和 空的下标运算符[]

一、函数的形参的声明C语言可以像下面这样声明函数的形参:voidfunc(inta[]){   //...}对于这种写法,无论怎么看都好像要向函数的参数传递数组。可是,在C中是不能够将数组作为函数的参数进行传递的。无论如何,在这种情况下,你只能传递指向数组初始元素的指针。在声明函数形参时,...

《征服 C 指针》摘录4:函数 与 指针

一、指向函数的指针函数名可以在表达式中被解读成“指向函数的指针”,因此,正如代码清单2-2的实验那样,写成func就可以取得指向函数的指针。“指向函数的指针”本质上也是指针(地址),所以可以将它赋给指针型变量。比如有下面的函数原型:intfunc(doubled);保存指向此函数的指针的变量的声明如下:int(*fun...

《征服 C 指针》摘录3:数组 与 指针

一、数组和指针的微妙关系数组是指将固定个数、相同类型的变量排列起来的对象。正如之前说明的那样,给指针加N,指针前进“当前指针指向的变量类型的长度XN”。因此,给指向数组的某个元素的指针加N后,指针会指向N个之后的元素。#include<stdio.h>intmain(void){intarray[5];in...

《征服 C 指针》摘录2:C变量的 作用域 和 生命周期(存储期)

在开发一些小程序的时候,也许我们并不在意作用域的必要性。可是,当你书写几万行,甚至几十万行的代码的时候,没有作用域肯定是不能忍受的。C语言有如下3种作用域。1、全局变量在函数之外声明的变量,默认地会成为全局变量。全局变量在任何地方都是可见的。当程序被分割为多个源代码文件进行编译时,声明为全局变量的变量也是可以从其他源代...

《征服 C 指针》摘录1:什么是空指针?区分 NULL、0 和 ''

一、什么是空指针?空指针是一个特殊的指针值。空指针是指可以确保没有向任何一个对象的指针。通常使用宏定义NULL来表示空指针常量值。空指针确保它和任何非空指针进行比较都不会相等,因此经常作为函数发生异常时的返回值使用。另外,对于第5章的链表来说,也经常在数据的末尾放上一个空指针来提示:“请注意,后面已经没有元素了哦。”在...

【C语言入门教程】7.3 结构体指针的定义和引用

C语言中指针的操作非常灵活,它也能指向结构体变量对结构体变量进行操作。在学习结构指针之前,需要再次加深对指针的认识。声明指针变量时所使用的数据类型修饰符实际上的作用是定义指针访问内存的范围,如果指针定义为整型,那么该指针访问内存的范围就是整型变量在内存中所占用的空间大小。虽然每次尝试将指针变量所在存储的内存地址输出会发...

【C语言入门教程】4.9 指向指针的指针

指针变量可以指向另一个指针变量,这种操作并不是将一个指针变量所指向的内存地址传递给另一个指针变量,而是定义一种指向指针类型的指针变量,可将其称为双重指针。双重指针的定义形式为:数据类型**变量名;其中使用2个间接运算符,如下例所示:inti,*pi,**dpi;//声明整型变量i、整型指针变量pi和整型双重指针变量dp...

【C语言入门教程】4.8 指针数组

指针数组是一种特殊的数组,这类数组存放的全部是同一数据类型的内存地址。指针数组的定义形式为:数据类型*数组名[长度];例如:constchar*c[4]={"China","USA","Rassia","Japan"};//定义长度为4的常量字符型指针数组,将数组元素分别指向4个字符串常量inti;for(i=0;i&...

【C语言入门教程】4.7 指针的地址分配

指针变量可指向任何类型的变量,在处理过程中,指针变量指向的变量通过传递变量的地址来实现,指针变量的取值是内存的地址,这个地址应当是安全的,不可以是随意的。否则,写入内存单元的值将使得已存放的数据或程序丢失。应使用变异系统提供的标准函数来实现地址分配。GCC编译器支持动态分配内存的函数malloc()和free(),它们...

【C语言入门教程】4.6 指针 和 数组

数组在内存中以顺序的形式存放,数组的第一个存储单元的地址即数组的首地址。对一维数组来说,直接引用数组名就能获得该数组的首地址。指针变量可以存放于其内容相同的数组首地址,也可以指向某一具体的数组元素。通过这种方式,多维数组也被看作一维数组来操作,简化了数组的操作方式。 4.6.1指针与一维数组定义一维数组后,可...

【C语言入门教程】4.5 指针变量的定义与引用

指针变量是包含内存地址的变量。一般的变量直接包含一个特定的值,而指针变量包含的是某一特定数据类型的内存地址。普通变量直接引用其中的值,指针变量则间接引用所指向内存地址中的值。指针变量在使用前需要声明与初始化。 4.5.1指针变量的定义指针变量定义时,需要指定所指向的数据类型。声明指针变量的一般形式为:数据类型...

【C语言入门教程】4.4 指针 与 指针变量

在程序中声明变量后,编译器就会为该变量分配相应的内存单元。也就是说,每个变量在内存会有固定的位置,有具体的地址。由于变量的数据类型不同,它所占的内存单元数也不相同。如下列声明了一些变量和数组。inti=18;//声明整形变量i,并赋值charc[5]={89,90,91,92,93};//声明字符型数组c并初始化flo...

c++ 中的智能指针实现

摘要:C++11中新增加了智能指针来预防内存泄漏的问题,在share_ptr中主要是通过“引用计数机制”来实现的。我们今天也来自己实现一个简单的智能指针:1//smartPointer.cpp:定义控制台应用程序的入口点。2//34#include"stdafx.h"5#include<iostream>6...

C++ 智能指针 shared_ptr

  今天晚上去旁听了C++高级编程的课,其中提到智能指针。第一反映还以为是auto_ptr呢,一听才知道是share_ptr这个。哦,原来是C++11特性。大致的原因是auto_ptr有一点缺陷,而share_ptr比较安全。好吧,那就这个了。  先写一个简单的代码感受一下1#include<iostream&g...
首页上一页...34567...下一页尾页