1.指针和指针变量 很多初学者没搞明白这两者的区别,以至于很多时候把两者等同了。在C语言中指针是一个概念性的东西,简单而言就是地址。而指针变量是变量类型,属于int,float这类的,是用来存放指针的,也就是地址。但是很多时候我们说指针时是代指指针变量的,这点我们要知道。 2.指针变量的地址和指针变量存放的地址 凡是变量都要有内存来存放,指针变量也不例外
第一种,指针变量没有初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。示例如下: char*p;//错误,未初始化,成为野指针 第二种,指针变量被free或者delete之后,没有置为NULL,让人误以为是个合法的指针。示例如下: char*p = (char*)malloc(100); ...free(p);//错误...
错误八:指针类型不匹配 - 强扭的瓜不甜啊! double d = 3.14; int* p = &d; // 错!类型不匹配 正确做法: double d = 3.14; double* p = &d; // 对!类型要匹配 错误九:多重指针不打基础 - 这是在叠积木不打底! int** pp; // 指向指针的指针 *pp = new int(42); // 危险!底下一块...
指针类型不匹配是指指针的类型与所指向的变量的类型不匹配。如果指针类型不匹配,就会导致访问到错误的内存地址,从而出现不可预料的错误。以下是一个指针类型不匹配的例子:char c = 'A';int* p = &c; // 这里会导致指针类型不匹配 解决方法:在定义指针的时候,要确保指针的类型与所指向的变量的类型匹配。...
下面来列举一下在学习过程中指针的常见错误。 1.指针和指针变量 很多初学者没搞明白这两者的区别,以至于很多时候把两者等同了。在C语言中指针是一个概念性的东西,简单而言就是地址。而指针变量是变量类型,属于int,float这类的,是用来存放指针的,也就是地址。但是很多时候我们说指针时是代指指针变量的,这点我们要...
内存已经被释放了,但是继续通过指针来使用 这里一般有三种情况: 第一种:就是上面所说的,free(p)之后,继续通过p 指针来访问内存。解决的办法就是给p 置NULL。 第二种:函数返回栈内存。这是初学者最容易犯的错误。比如在函数内部定义了一个数组,却用return 语句返回指向该数组的指针:C语言中return的各种用法。解...
使用指针导致的内存错误 常见的有内存泄漏、使用未初始化的内存、内存覆盖、内存访问越界、访问空指针、访问野指针。 内存泄漏 内存泄漏比较令人讨厌,放到下章单独进行讲解。 使用未初始化的内存 char *p = malloc(10);,p 已被分配了 10 个字节。但是这 10 个字节可能包含垃圾数据,如图所示。 如果在对这个 p...
以下通过几个实例, 说明指针编程时的几个常见错误和改正办法。 一、 使用未初始化的指针 C 语言中指针是用于存放变量地址的。 指针变量是 C 语言中的一个特殊类型的变量。 指针变量定义后应确定其指向。 在没有确定指针的具体指向前, 指针变量的内容是随机的地址, 盲目地引用将十分危险。 例如: 下列程序用于将...
指针类型错误:指针类型错误是 C/C++ 中最常见的错误之一。确保使用正确的指针类型,否则可能会导致编译错误或运行时错误。 空指针:空指针是指未指向任何地址的指针变量。使用空指针可能会导致程序崩溃或产生不可预期的结果。在访问空指针之前,必须先将其设置为非空值。