*表示指针,**表示指针的指针。
例如:int *a;这个语句声明了一个变量a,a的数据类型是int *,也就是整型变量的指针类型(如果不懂什么是指针,那这个问题就没有意义了)。也就是说 a的值是一个内存地址,在这个地址所在的内存空间中存放的是一个整型变量。再看:int **b;这个语句也声明了一个变量b,b的数据类型是int **,也就是整型变量的指针的指针类型(二级指针)。也就是说 b的值是一个内存地址,该地址所在的内存空间中存放的是一个整型变量的指针(一级指针,或许就是上面那个a的值)。
C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,对此合理进行分类,找出它们与数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。
*表示指针,**表示指针的指针,一句话可能很难和你解释得那么明白,buffer中存放的是内存中的地址,而这个存放内容对应的地址中还是存放的地址,最后那个地址中存放着类型名为MediaBuffer(字面上看这个是用于媒体播放时的缓冲数据)的数据首地址
指针的指针。
举例来说,
int* p1;
表示说p1指向一个int型的量,而p本身是指向int型变量的指针,它保存一个地址。
int** p2;
表示说p2指向一个int*型的量,而它指向的int*型变量又指向一个int型变量。p2和跑
指向的变量都是地址。
表示指向指针数据的指针,存放指针数据的存放地址,如:* *p;char *buffer[]={"This is a data pointer.","Hello,how are you!"};p=buffer;则p的内容是指针数组buffer的首地址
是是是法执法 赋值赋值法 地址。