c语言指针 p,c语言指针p和*p区别

kodinid 13 0

大家好,今天小编关注到一个比较意思的话题,就是关于c语言指针 p的问题,于是小编就整理了3个相关介绍c语言指针 p的解答,让一起看看吧。

  1. c语言中不移动指针的情况下改变指针p引用值?
  2. c语言中,行指针指向哪里,为什么(*p)[]方框里是二维数组的列不是行,他不是行指针吗?
  3. c语言p是怎么执行的?

c语言中移动指针的情况下改变指针p引用值?

这个常量指针的说法。 意思是指向常量的指针。 比如 const char * p="abcd"; 可以做p="mnop"这样的赋值, 即可以改变p值。 但不能做*p='s'这样的赋值。即不能改变指向的数据

c语言中,行指针指向哪里,为什么(*p)[]方框里是二维数组的列不是行,他不是行指针吗?

(*p)[X]只是说p是指向一个具有X列的一维数组的指针,指针的类型(就是这个一维数组的元素的类型)有待你声明,X的大小也要你写明确,否则p就不可用;p确实是行指针,是指向一行一维数组的,但一个一维数组的长度不是用列数来表示的吗?至于p指向了哪一行,那要由代码给它赋值了才能知道。

c语言指针 p,c语言指针p和*p区别-第1张图片-安济编程网
图片来源网络,侵删)
比如有int a[3][4],(*p)[4],p=a;,那么这时p就指向了第一行(第一下标为0的那一行),p+1就指向了第二行(第一下标为1),p+2就指向了第三行(第一下标为2)。若没有赋值(没有写p=a),那么p就只是一个能指向列数为4的(即数组长度为4)int型数组的指针,它这时还是野指针,没有具体指向!

c语言p是怎么执行的?

C语言中%p用来输出指针类型自身的值。 也就是说 %p用来输出地址。  一、使用方法: %p一般用于printf及同类函数中。形式为 printf("%p", varp); 其中后续参数varp为某一个指针变量。如 int a,*p; p=&a; printf("%p %p", p, &a);这里输出的p和&a都是int*型。  二、功能: %p格式符会输出指针本身的值,也就是指针指向的地址值。 该输出为16进制形式,具体输出值取决于指针指向的实际地址值。 三、与%x区别: %x同样输出16进制形式,不过%x对应的是int型,也就是说,其输出长度与系统int型占的字节相等。如32位编译器,int型占4位字节,那么%x输出的结果最多为16个16进制字符。 而%p输出宽度取决于系统地址总线位数,即16位最多输出4位16进制字符,32位最多输出8位16进制字符,64位最多输出16位16进制字符。 所以用%p输出地址,相对于用%x输出,可以有更好的移植型和适应性,不会因为更换平台而引起错误

到此,以上就是小编对于c语言指针 p的问题就介绍到这了,希望介绍关于c语言指针 p的3点解答对大家有用。

c语言指针 p,c语言指针p和*p区别-第2张图片-安济编程网
(图片来源网络,侵删)

标签: 指针 指向 输出