c语言二级指针中二级指针p,*p是地址还是值,为什么有的时候就是值而不是地址 c语言问题,二级指针的指向是怎样的,以及后面那个p++的含义...

作者&投稿:巧沸 (若有异议请与网页底部的电邮联系)
对于一级指针而言,*p是取值,对于二级指针而言,*p是取地址,但是地址又是无符整形数据,所以在二级指针中你把*p当值来用的话,编译不报错,但是不合规定。

这个问题也是困扰的,我到现在都有点乱。
p是指针,有就是地址。
*p是指针向的值。
对于数值型的,这样理解没错。
不过对于字符等其他类型有点怪,举个例子:
char str=“abc”,*p;
p=&str;
输出*p 结果是a
输出p 结果是abc。

p是指向指针的指针,对p取值当然还是个指针

c语言指针二级指针和二级地址的解释和平常地址与指针的区别~

解释如下:指针的本质其实就是地址,我们常说的指针哪,一般都是指的指针变量,就是存放地址的变量。二级指针,就是指向指针的指针,举例说明:char ch='A'; //定义了一个char型变量ch,并初始化char *p; //定义了一个char型指针变量pchar **pp; //定义了一个char型二级指针变量ppp=&ch; //把变量ch的地址赋值给p,那么p就指向了变量ch了。pp=&p; //把指针变量p的地址赋值给pp,那么pp就指向了指针p了。因为指针变量,它有自己的内存空间,所有的指针类型的变量都是4个字节的大小,即存放的是一个32位的地址值。二级指针和二级地址的本质含义是一样的,指针一般是认为是指针变量的,其值是可变的;而地址,我们通常认为它是一个常量值,是不变的。平常地址与指针,一样的理解,本质是一样的,都是地址。我们说地址,比如说我定义了一个变量a,那么这个变量a的地址&a,在编译阶段它的值就已经确定了,是不变的了。而对于指针变量p,它可以存放变量a的地址&a,也可以存放变量b的地址&b,它的值是可变的,所以我们就把这样的变量就就做指针。 总而言之,指针和地址,本质是一样的,只是两种不同的叫法而已。

先看*p[5],它定义了一个指针数组,一个含有5个元素的一维数组,不过元素的值p[0]、p[1]、……都是指针。
再看**pp=p,pp是一个二级指针,它是指向指针的指针(本例中它指向p),其值为p的地址。*pp则是p的值,即p[0]的地址。**pp则是p[0]的元素值。
当执行**p++时,依次得到p[0]、p[1]、……的元素值。

定义一个二级指针应该怎么定义!是int *(*p)吗!
答:用int **p;就可以,因为*是右结合的,先*p之后再*(*p);定义指针函数的时候要用int(*p)(),同样是因为*和()优先级相同,右结合

C语言的二级指针,看不懂啊? p=name+i;是对的, printf("%s\n",*p...
答:你这个二级指针没有使用到 p=name+i;操作的也是p的一级指针,对一级指针取值能正常取道p的值 你可以试试 *p=name+i; 看看还正确不

...c把j的地址赋予i,为啥不对呢,还有d是啥意思,这个二级指针_百度...
答:&是取地址符号,&j;是取j的地址,而不是值,所以C是错的 p是二级指针,*是取值符号,p是地址,*p就是相当于i了

C语言指针int a=10,*p,**p;在这儿p=a,*p=a,**p是一样的么?说详细...
答:不一样的,p=a,是表示p的指针指向a的地址,*p=a,表示a地址里面的内容,也就是10. 我们不能写p=10,只能写*p=10, **p=p,***p=*p,这个是我培训时学到的,意思和前面一样,p指向某个地址,*p指向某个地址里面的内容,这样记就好了,望采纳。。

C语言二级指针 详细分析一下这个程序
答:p是双重指针,p可以指向其一个指针的地址,即变量里面放数据,指针里面放变量的地址,二级指针放指针的地址。

...请用 **p ,(*P)[ ] ,*p[ ] 三种来进行指针定义
答:int a[4][5],(*p)[5]; //p表示数组指针p=a;/*有了这个定义后,数组指针p指向了二维数组a的首地址,以后通过p就可以访问a */访问格式:p[i][j] , (*(p+i))[j] , *(*(p+i)+j) , *(p[i]+j) 都表是a[i][j]eg: p[1][1]=1; //相当于a[1][1]=1; ___**p主要用在函数传...

C语言中的二维数组名是一个二重指针吗?
答:不是 二级指针p也可以解释为指针的指针,即p内保存的值实际上还是一个指针,计算:p的值实际上是一个指针值,那么 *(*p)即二级指针指向的最终值 对于二维数组a[2][2],a也是一个地址,并且这个值也等于a[0],也等于a[0[0]的地址,即&a[0][0],由此看来对a取地址的值是一个变量值(不...

c语言中有这样一个定义:int **p;问一下这个p是定义的什么变量?
答:这个p是定义的二级指针变量,即“指向指针的指针”。

c语言中,关于指针int(*p)[4]和int*p指向二维数组a[3][4]初始化的问题...
答:二维数组相当于多行列数相同的一位数组组合起来;int (*p)[N]定义一个行指针p,其中:p指向一个N列二维数组的首地址 p自增1,p指向下一“行”一维数组的首地址 因为p是一个二级指针。所以索引其指向的数据内容需要取二次内容,格式及解释如下:格式:*(*(p+行)+列)解释:其实很好理解,因为p...

c语言指针二级指针和二级地址的解释和平常地址与指针的区别
答:pp=&p; //把指针变量p的地址赋值给pp,那么pp就指向了指针p了。因为指针变量,它有自己的内存空间,所有的指针类型的变量都是4个字节的大小,即存放的是一个32位的地址值。二级指针和二级地址的本质含义是一样的,指针一般是认为是指针变量的,其值是可变的;而地址,我们通常认为它是一个常量值...