大家好,今天小编来为大家解答指针和 *** 的区别这个问题,c语言指针p和*p区别很多人还不知道,现在让我们一起来看看吧!
本文目录
一、指针数组和数组指针的区别
1、指针数组和数组指针是两种不同类型的概念。
2、在定义和使用上有所区别指针数组是一个数组,其中的每个元素都是指针类型,而数组指针是一个指针,它指向一个数组的首 *** 指针数组的声明方式为“typearray”,而数组指针的声明方式为“type(ptr)[size]”。指针数组:指针数组是一个数组,其中的每个元素都是指针类型。也就是说,指针数组存储了多个指针的 *** ,这些指针可以指向不同类型的数据或对象。指针数组的声明方式为:typearray,其中type为指针指向的数据类型。例如,intptrArray表示一个包含5个指向整数类型数据的指针的数组。数组指针:数组指针是一个指针,它指向一个数组的首 *** 。数组指针的声明方式为:type(ptr)[size],其中type为数组中元素的数据类型,size为数组的大小。例如,int(ptr)表示一个指向包含5个整数类型元素的数组的指针。数组指针解析出来的是整个数组,因此可以通过指针进行遍历访问数组的所有元素。数组指针通常用于处理 *** 数组。
二、指针和 *** 有什么区别呢
1、*(p+1):指针p所指向的内存 *** 单元的下一个内存 *** 单元中的值。
2、p+1:指针p所指向的内存 *** 的下一个内存 *** 。
1、*(p+1):*的优先级比+的优先级高,所以*P+1在编译器中是先取出p指向的int值然后加1。
2、p+1:直接将内存中指向的 *** 加1,就是将要指向的 *** 。
参考资料来源:百度百科-指针变量
三、引用, *** 和指针有什么区别
1、引用,一个变量的别名,为什么引入别名呢?原因是我们想定义一个变量,他共享另一个变量的内存空间,使用别名无疑是一个好的选择。变量是什么?是一个内存空间的名字,如果我们给这个内存空间在起另外一个名字,那就是能够共享这个内存了,引用(别名)的由此而来。
2、指针,指向另一个内存空间的变量,我们可以通过它来索引另一个内存空间的内容,本身有自己的内存空间。
3、引用访问一个变量是直接访问,而指针是间接访问。
4、引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有自己的内存空间。
5、引用在开始的时候就绑定到了一个内存空间(开始必须赋初值),所以他只能是这个
6、内存空间的名字,而不能改成其他的,当然可以改变这个内存空间的值.
7、x= j;//不能否认x仍然引用i,并没有成为j的别名,只是修改了x和j共享的内存空间的值.
8、这点与指针不同,指针在任何时刻都可以改变自己的指向
四、int* a和int* b有什么区别
1、int* a和int* b都是指向整型数据的指针变量,但它们之间有一些区别。
2、声明的位置:int* a通常是在函数内部或者作为函数参数声明的局部变量,而int* b可以是在全局范围内声明的变量。
3、初始化:int* a在声明时没有进行初始化,它只是定义了一个指向整型数据的指针变量。而int* b可以在声明时进行初始化,例如int* b= NULL;或者int* b=&some_int;。
4、指向的内存 *** :int* a在声明时并没有指定具体的内存 *** ,它只是一个指向整型数据的指针变量,需要通过赋值 *** 作来指向具体的内存 *** 。而int* b在声明时可以直接指向某个整型数据的内存 *** 。
5、总的来说,int* a和int* b在声明时的区别在于是否进行了初始化和指向的内存 *** 。int* a只是定义了一个指向整型数据的指针变量,需要通过赋值 *** 作来指向具体的内存 *** 。而int* b可以在声明时进行初始化,并且可以直接指向某个整型数据的内存 *** 。
五、指针和 *** 的区别是什么
*p是指针变量p指向的变量a的存储内容,*p= 5;
p是指针变量的存储内容,因为p指向a,所以p的存储内容(存储空间的值)就是 *** 为变量a分配的存储 *** ;
1)上面的程序中首先声明了一个int类型的变量a,初始化为5;这个过程为:
2)在初始化时,存储空间存储的是int型的值5,存储 *** 是由 *** 自动分配的,同理要声明一个指向a的指针,在初始化的时候赋值给指针变量的值应该是变量a的存储 *** ,故而有 int* p=&a;
同理,要是声明另外一个int类型的指针变量q:
声明了一个int类型的指针变量,并将指针变量p的值赋予q,同样是变量,a= 5,5是变量a的存储空间的值,那么p=?,p等于p存储空间的那个值,即p=#ffa1(a的存储 *** );
现在将这个值赋给了指针变量q,正如a初始化的过程一样,int a=5的过程,是将5存储在了int类型变量的存储空间之中,初始化指针变量q时,也是将等号右边的值存储在q的存储空间之中,上边的 *** 作的结果如下:
从上面的 *** 作可以看出,&p *** 的是指针变量p的存储 *** 。
声明了一个指针变量q,并对其初始化,这一过程的 *** 作如下:
为指针变量q初始化,q的存储空间中存储的值为5.
1、从上面的 *** 作可以看出,是将*p的值赋给了q,p指向变量a,p=#ffa1,而*p的过程就是获得p *** 处的存储空间的值,即*(#ffa1)=5,也就是将5赋给了指针变量q,q的存储空间存储的是5;
2、指针变量是指向某一变量的变量,在其存储空间中存储的一般是其他变量的存储 *** ,上面的初始化过程int* q=*p;是非常危险的,有可能造成程序奔溃。
六、指针与 *** 的区别
1、指针和 *** 更大的区别就是指针是有类型的, *** 是没有类型的。我们当然可以通过绝对 *** 的方式找到函数和数据,但是 *** 是没有类型的,不能对 *** 进行算术 *** 作,在涉及诸如数组等 *** 作时就不能通过 *** 的自增和自减来访问数组的各个变量。
2、指针是由 *** 和类型两部分构成的,指向数据的指针不仅记录该数据的在内存中的存放的 *** ,还记录该数据的类型,即在内存中占用几个字节,这是 *** 所不具有的。
七、二级指针和一级指针的区别
二级指针和一级指针的区别如下:
1、一级指针可以直接访问和修改指针指向的内存 *** 上的数据,而二级指针需要通过两次解引用 *** 作才能访问和修改一级指针指向的内存 *** 上的数据。
2、一级指针通常用于直接 *** 作数据对象,而二级指针通常用于间接 *** 作一级指针或多级指针。
3、一级指针可以通过取 *** *** 作获取某个变量的内存 *** ,而二级指针则需要通过取 *** *** 作获取一级指针的内存 *** 。
关于本次指针和 *** 的区别和c语言指针p和*p区别的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。