简单地说指针就是指向变量和对象的地址。 指针的用途非常广泛,比如如果你想通过函数改变一个变量的值,就得用指针而不能用值传递。还有在很多时候变量,特别是对象的数据量实在太大,程序员就会用指针来做形参,只需要传递一个地址就行,大大提高了效率。 以上还只是指针的初步应用,随着你在C++学习上的逐步深入,你会...
用来保存 指针(地址) 的变量,就是指针变量。如果指针变量p1保存了变量 num的地址,则就说:p1指向了变量num,也可以说p1指向了num所在的内存块 ,这种指向关系,在图中一般用 箭头表示。 上图中,指针变量p1指向了num所在的内存块 ,即从地址0028FF40开始的4个byte 的内存块。 这里学2个名词,读英文资料的时候可能...
数组的指针是指向数组在内存的起始地址,数组元素的指针是指向数组元素在内存的起始地址。 1. 当指针变量指向一维数组,可以采用以下两种方法: (1). 在数据定义语句中用赋初值的方式:*指针变量=数组名; (2). 在程序中用赋值的方式:指针变量=数组名; 2. 当指针变量指向一维数组元素,可以采用以下两种方法: (1)....
void指针是一种特殊的指针类型,它可以指向任何类型的数据,因为它没有指定指向的类型。void指针通常用于处理不同类型的数据,或者在不知道数据类型时使用。例如:void *p;int a = 10;char c = 'a';p = &a;printf("%d\n", *(int *)p); // 输出10 p = &c;printf("%c\n", *(char *)p); ...
前面讲了指针的作用,这里再强调一点,指针是一把双刃剑。 用好了能十分灵活而且提高程序的效率,但是如果使用不当,则会出现程序”死机”等致命问题。 而这些问题往往是由于错误地使用指针而造成的,最常见的就是内存溢出错误,指针指向未知地址。 1.地址与指针 ...
C语言中的指针具有多种用途,主要包括以下几点:1. 动态内存分配:通过指针,可以在程序运行时动态地分配和释放内存。这使得程序能够根据需要灵活地管理内存资源。例如,可以使用`malloc()`、`c...
int * 是指向int类型的指针; int **,也即(int *) *,是指向int *类型的指针,也就是指向指针的指针; int ***,也即(int **) *,是指向int**类型的指针,也就是指向指针的指针的指针; …我想你应该懂了 struct xxx *,是指向struct xxx类型的指针; ...
一级指针可以指向变量的内存,二级指针记录一级指针的地址,三级记录二级地址,以此类推 二级指针有权利去...
- 野指针:野指针是一个指向无效或未知的内存地址的指针,它的值不是NULL,但也不是一个合法的地址。野指针通常是由于指针没有被正确初始化,或者指针指向的内存空间已经被释放或修改而造成的。野指针也不能被解引用,否则会导致程序崩溃或数据错误。例如:int *p; // 定义一个指向整型的指针p,没有初始化,它...
给指针单独赋值的时候,注意不要在指针变量的前面带上*(声明的时候直接初始化则不需要也不能去掉*)。不知道你是否注意到了,在上面的例子中,我们在调用printf函数的时候,使用指针变量的时候用到了形如“*p”、“*p_str”这样的形式,这是取指针指向的变量的值的含义。那么一个指针有什么用呢,上例中实际上...