指针分析

int *a;

int b = 4;

a= &b;

//a:b的地址

//*a 取b地址的值,为4

//&a为指针变量的地址

//*(&a)为指针变量储存的地址 即为a

int **b = &a;

//b为指针变量a的地址

//*b为指针变量a所储存的地址

//改变*b(指针变量所储存的地址)即改变了*b的值

时间: 2024-08-01 17:02:07

指针分析的相关文章

20150430 调试分析之 根据内核报错信息PC指针分析错误

20150430 调试分析之 根据内核报错信息PC指针分析错误 2015-04-30 Lover雪儿 大家写驱动的时候不知道有没有发现,当我们驱动写错了,发生内核奔溃时,会打印一大堆的报错信息, 如果再返回我们的程序中一行一行代码的检查,既耗费时间,并且有些逻辑上的错误,我们是很难看的出来的, 那我们能不能再这一大堆的报错信息中发现问题的所在呢? 此处我们来模拟一个错误,还是沿用上一篇文章中的驱动代码err_led.c的驱动程序中的代码修改错误,当然大家用其他的驱动代码做测试也可以. 博客地址:

C语言中字符数组和字符串指针分析

这几天搞Unix上的C程序,里面用到了很多字符数组和字符串指针,我记得在学完C语言后相当一段时间里,对指针这个东西还是模模糊糊,后来工作也没怎么 用到过C,虽然网上这类的文章也有很多,还是决定自己在这做个小总结,也算加深下自己的印象,写了下面的测试程序: #include <stdio.h> int main(int argc, char *argv[]){ char day[15] = "abcdefghijklmn";  char* strTmp = "opq

指针分析(一)

指针,一直是C语言最难的话题,不通指针,不敢说自己熟悉C语言.那么就按照我个人的理解来说一下指针吧,如果还看不懂,那就没办法了,因为我的理解程度能够帮你以最清晰的角度去理解指针: 在32位操作系统下,不管是什么类型的指针,指针变量在该环境下占4个byte. 还要区分一个概念:野指针,什么是野指针?也就是没有具体的指向. 比如: Int *p ; *p =100 ; 因为指针p没有分配相应的内存,所以给指针赋值,可能会引发段错误. 还有一种情况: int *p = NULL; *P = 100 ;

第36课 函数与指针分析

1. 函数类型 (1)C语言中的函数有自己特定的类型,这个类型由返回值.参数类型和参数个数共同决定.如int add(int i,int j)的类型为int(int,int). (2)C语言中通过typedef为函数类型重命名 typedef type name(parameter list);//如typedef int f(int,int); 2. 函数指针 (1)函数指针用于指向一个函数,函数名是执行函数体的入口地址. (2)定义函数指针的两种方法 ①通过函数类型定义:FuncType*

NULL指针分析

最近在查看同事写的一段程序时,发现里边有一个函数大概如下: void example(uint8 *pData) { ... if(NULL == *pData) return; while(*pData != NULL) { ... } ... } 第一眼看去感觉红色部分写的没有什么,当看到while时, 感觉第一句有些多余, 没有必要这样判断,当*pData == NULL时while就进不去, 但是想到这里是第一次判断pData,于是估计当时同事是想写if(NULL == pData),笔

智能指针分析及auto_ptr源码

简介 C++没有内存自动回收机制,对堆内存的管理就是简单的new和delete,每次new出来的内存都需要手动delete释放.但由于忘记.流程复杂或者异常退出等,都有可能导致没有执行delete释放内存,造成内存泄漏. 在实际工程中,我们往往希望将精力放在应用层上而不是费劲心思处理语言的细枝末节(内存释放),于是就有了最原始的只能指针auto_ptr. 智能指针原理 智能指针是一种资源管理类,这个类在构造函数中传入一个原始指针,在析构函数中释放传入的指针.智能指针都是栈上的对象,所以当函数(或

第37课 智能指针分析

1. 永恒的话题:内存泄漏 (1)动态申请堆空间,用完后不归还 (2)C++语言中没有垃圾回收的机制 (3)指针无法控制所指堆空间的生命周期 [编程实验]内存泄漏 #include <iostream> #include "IntArray.h" using namespace std; class Test { int i; public: Test(int i) { this->i = i; cout << "Test(int i)"

数组与指针分析

数组的本质 数组是一段连续的内存空间 数组的空间大小为sizeof(array_type)*array_size 数组名可以看做指向第一个元素的常量指针 指针的运算 指针是一种特殊的变量,与整数的运算规则为 p+n: <--> (unsigned int)p + n * sizeof(*p); 结论: 当指针p指向一个同类型的数组的元素时,p+1将指向当前元素的下一个元素:p-1将指向当前元素的上一个元素. 指针之间只支持减法运算,参与减法运算的指针类型必须相同, 注意: 只有当两个指针指向同

C语言指针分析

int p; p是一个普通的整型变量. int *p; 1.p与*结合,说明p是一个指针.2.*p与int结合,说明指针所指向的内容的类型是整型的. 所以p是一个返回整型数据的指针. int p[5]; 1.p与[]结合,说明p是一个数组.2.p[5]与int结合,说明数组里的元素是整型的. 所以p是一个由整型数据组成的数组. int *p[5]; 1.p与[]结合(因为其优先级比*高),说明p是一个数组.2.p[5]与*结合,说明数组里的元素是指针类型.3.*p[5]与int结合, 说明指针所