指向指针的指针的作用,指向指针的指针是什么意思

1,指向指针的指针是什么意思1 指针也是一个变量,在PC机windows vc里占4个字节,dos的tc里是2个字节2 指针变量里存的是一2字节或4字节无符号整数,数值是指针指向内容的内存编号3 指向指针的指针就是 指针A里存有指针B的所在内存地址,指针B里面存有变量A所在的位置你有三个变量int **pa ,*pb,*C 分别存在0X4000 0X4002 0X4004的内存单元c=0x1234 pb=&c pa=&pb那么内存中0x4000到0x4005 这6个字节内容就是0X02 0X40 0x04,0x40,0x34,0x12因为pc 是小端在前指针也有地址 。。。指向指针的指针就是指向指针的地址 。
2,关于数据结构中指针的作用大哥!说实在的,数据结构我学的很不错 , 但你要篇指针用法的论文就难死人咯 。我也不能给你写篇论文发上来吧!不过还是帮帮你吧 。我的理解中指针就是一个地址,你可以以这为中心写 。具体写 它的表示方法,它的作用举例说明一下(随便找个程序如折半查找 , 希尔排序等都有嘛) 。注释下里面的语句 。这样就很多字了^_^ 。然后写写在不同的存储方法中的应用,如 , 链式存储中它的作用 。举几个不同链结构的例子 。然后,写写自己的思考,如 , 我在用它时,总把它与赋值相比较 。。等等太多感触了^_^ 。。至于论文的格式等,这个肯定有用: http://wenwen.sogou.com/z/q661367348.htm不要嫌麻烦,仔细看看肯定有用的 。最后,希望我的这些废话能对你的论文有用!^_^ 。。祝你好运!
3 , 指向数组指针的运用//定义指针数组(而不是数组指针)//所谓指针数组就是"它是一个数组,它的每个元素是指针"//所谓数组指针就是"它是一个指针变量,它指向一个数组的首地址"typedefint*PointerArray10[10];PointerArray10Data[3];//可以理解Data为int*Data[3][10];//可以直接赋值:intTestData=http://www.lisdn.com/gkrj/shjy/32;//用来测试的数据Data[1][2]=&TestData;//因为Data是指针数组,所以给它的元素赋指针//我们来验证上面的赋值PointerArray10*pWork=Data;//定义PointerArray10类型的指针指向Data//因为Data为数组,所以直接用Data数组名是表示它的首地址pWork++;//让pWork指向Data[1]首地址;printf("Data[1][2]=[%d]\n",(*pWork)[2]);//用int*来验证int**pWork2=&(Data[0][0]);//定义int类型的指针指向Data第0行第0列元素,因为//该元素是整型指针,所以应该定义指向整型指针的指针,在C语言中数组是按行存放的//Data有3行(0~2),每行10列(0~9),所以要得到第1行第2列的数据需要将pWork2移动//1行*10个元素/行+第2列(即计算[1][2]元素对Data[0][0]偏移量pWork2=pWork2+1*10+2;printf("Data[1][2]=[%d]\n",**pWork2);【指向指针的指针的作用,指向指针的指针是什么意思】
4,指针的作用是什么)指针的操作流程申请并初始化或配置为空:int *pInt=NULL;开辟空间或使其指向对象:pInt=new Int(3);或int i=3;pint=&i;用指针(更确切地说是操作内存,在使用之前加if(pint!=NULL)或assert(pInt!=NULL)后再使用,以防内存申请失败的情况下使用指针): if(p!=NULL) {use pint};释放使用完的内存.free(pInt);置指针为空pInt=NULL;(避免野指针的出现)(3) 在函数的参数传递中,编译器总是要为函数的每个参数制作临时副本,假如参数为p的话,那么编译器会产生p的副本_p,使_p=p; 假如函数体内的程式修指针的作用:1、指针就是指向一个特定内存地址的一个变量 。c语言指针可以有效地表示复杂的数据结构、动态分配内存、高效地使用数组和字符串、使得调用函数时得到多个返回值等 。指针的应用往往与数组联系在一起,是最频繁的,也是最基础的 。在定义数组和函数时,系统都会为其自动分配一个指向其首地址的指针 。对于一个数组,其名称就是一个指针变量 。2、指针只是一个变量 , 它存储一个内存地址 。如果传入一个地址,比传入一个struct效率要高,因为少了一个拷贝过程 。3、指针能够有效的表示数据结构,能动态分配内存,能较方便的使用字符串,有效的使用数组 。4、指针直接与数据等的储存地址有关,是比较重要的 。比如,值传递不如地址传递高效,因为值传递先从实参的地址中提出值,再赋值给形参带入函数计算;而指针则把形参的地址直接指向实参地址 , 使用时直接提出数据,使效率提高,特别在频繁赋值等情况下 。5,指向指针的指针应该这样写:#include<stdio.h>main() int a[2][2]= int (*p)[2] ; p=a ; printf("%d",*(*(p+1)+1)) ;// getch() ;}哥哥来帮你分析~这里有两种写法:1, #include<stdio.h>main() int a[2][2]= int (*p)[2];//指向二维数组的行的指针, 相当于二级指针**p, 这里指向的而维数组的列必须是2 p=a ;//数组a的首地址赋给p printf("%d",*(*(p+1)+1)) ;//等价于a[1][1]getch() ;}2,#include<stdio.h>main() int a[2][2]= int *p; p = &a[0][0];//数组a的第一个元素的地址赋给p printf("%d", *(p+3) ) ; //等价于a[1][1]getch() ;}哥哥来帮你分析~这里有两种写法:1, #include<stdio.h>main() int a[2][2]= int (*p)[2];//指向二维数组的行的指针, 相当于二级指针**p, 这里指向的而维数组的列必须是2 p=a ;//数组a的首地址赋给p printf("%d",*(*(p+1)+1)) ;//等价于a[1][1]getch() ;}2,#include<stdio.h>main() int a[2][2]= int *p; p = &a[0][0];//数组a的第一个元素的地址赋给p printf("%d", *(p+3) ) ; //等价于a[1][1]getch() ;}应该这样写:#include<stdio.h>main() int a[2][2]= int (*p)[2] ; p=a ; printf("%d",*(*(p+1)+1)) ;// getch() ;}p1是一个指向整型的指针 , p2也是指向整型的指针,他们的值都是一个地址 , 那么p1=p2就是把p2的指向整型的地址赋给p1这个指向整型的指针,由于类型相同是可以直接赋值的 , 不会出错 。看标题的话,楼主的意思应该是p1=&p2 将p1的值是p2的地址 , 也就是指向指针的指针 。这样肯定错了,因为p1的类型是指向整型变量的 , 而赋给它一个指向整型变量的指针的地址肯定是错的,因为类型不同,你要p1指向一个指向整型的指针,那么就必须定义p1为:int *(*p1);此时它才是指向指向整型的指针,这样才可以赋地址给它 。

    推荐阅读