c语言中,我定义 int **p,和*a和b,其中*p的含义是什么,我让**p指向*a,*p指向b int *p什么意思?

作者&投稿:辕注 (若有异议请与网页底部的电邮联系)
p 是一个指向整型指针的指针,*p 是一个指向整型的指针, **p = *(*p)是一个整型数
a 是一个指向整型的指针,*a 是一个整型数
b 是一个整型数
所以:
**p = *a 可行,但是注意不是”指向“,是将 *a这个值赋值到*p这个地址
*p = b 不可行,因为*p是指针,b是整型数

int **p ;
int *a;
int b;
如果这样定义, a, b,p都是变量; 只不过b 是int 变量; b 是 指针变量(指针指向int) ; p 也是指针变量(指向了一个指针,这个指针又指向了int)
所以
取b的地址给a ; a = &b;
取a的地址给p ; p = &a;

对 b赋值 ; b = 1;
对a 指向的空间赋值 ; *a = 2;
对p 指向的空间赋值 *p = a; (此时,那个空间存放了a的值,这个值是一个地址)
如果你还想为这个地址所指向的空间赋值 **p = 44;

这里我们可以看到有那么一个空间,我却没有用a,b,p表示出来,那个空间,需要初始化。否则,你就有非法值。

int **p,*a,b; //这里定义了三个变量 p,a,b ;p是int** 型,也就是二级指针,a是int*型,一级指针,b是int型,*p表示取出变量p的值(是一个地址)处对应的值啊(是一个int*的值), **p 指向*a ??? 没有这种说法,不专业,**p表示的是变量p的值(地址)处对应值(地址)处的值啊,p可以指向a的存储单元,就是p=&a,而p不能指向b,因为b是int型,而&b 是int*型,p是int**型,要想硬性指向,使用强转,p=(int**)&b;这样就可以,但是要注意使用**p的值,如果b不是存储的一个有效地址的话,会导致非法内存访问。

在c语言中,定义一个整型变量,变量前加个*是什么意思啊,如int a[]={2,4,6,8,10},x,*p;这里的p加*是?谢~

int *p;//定义一个指向int类型地址的指针变量
int a = 5;//定义一个整型变量a,给变量a赋值为5
p=&a;//将指向变量p指向一个整型变量的地址a(&是取地址运算符)
printf("%d",*p);//打印指针p指向的内容,注意这里的"*"和第一行定义时或所用的"*"含义不同,这里的“*”是取出指针变量p所指向的内容,而第一行定义所用的“*”是声明变量p是一个指针类型的变量

  int *p[3]是指针数组,有三个指针。int* p[N]定义的是一个指针数组,就是说,由指针组成的一个数组,数组中元素的个数为N。

  指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。