//前面定义的a是普通变量,才可以这样赋值。
为什么*p=a;与*p=&a;效果一样?
方式不一样,目的相同。int a[10],*p=a;//这是定义时初始化 int b[10],*pb;pb=b;//这是定义了指针变量pb,再给pb赋值。
int *p=a和int *p=&a有什么区别?
p=a;//与前面定义的数组名a类型相同,才可以这样赋值。int a;int p=&a;//前面定义的a是普通变量,才可以这样赋值。
指向一维数组的指针与用指针访问数组有什么区别?
p=a;或p=&a[i];当定义了指向一维数组的指针后,就可以使用指针访问数组元素了。也就是说对数组元素的访问方式又多了一种方法。比如前面我们定义了指向一维数组a的指针变量p,我们就可以用*p得到其所指向的数组元素。2、指向一维数组的指针不能访问二维数组中的元素及它们的地址。二维数组中有另外的...
int*p=a; P=&a;有什么不同
1*p=a;//表示将a的值赋给p所指单元。p=&a;//表示将p指向a单元,即将a单元的地址赋给p。2inta,b;int*pa,*pb;a=10;b=20;*pa=a;*pb=b;//这两个语句有问题。pa,pb是野指针,没有指向任何单元。printf("%d,%d\n",*pa,*pb);printf("%x,%x\n",pa,pb);//pa,pb的野指针,其...
int *p,int a = 5;p = &a和*p = a有什么区别?printf时为什么第二种会...
第一种好理解,就是p指向a的地址,所以*p 和 就是a的值,第二种,是新手常常犯的错,p没有指向任何地址,是随机值,就给这个地址赋值,轻会导致内存错误,重则导致系统奔溃。如果要写printf("%d",p );前面必须要给p赋值,如下:int p ;int a=5 ;p= &a ;这样p指向了a,就可以取指针指向...
C语言中,p=&a和*p=&a有什么区别
p=&a;是将a的地址赋值给*p,结果会是一个十六进制的数。第二个是让p指向a的地址空间。*p的傎和a相等。int a=2,*p;p=&a;打印*P应该是一个地址值,很长一串,p=&a;打*P印结果会是2;
解释下指针*p p &p的关系
p是一个字符的指针;如果在定义时没有使用100*,那么取指针指向的内存的值;例如:Inta[]=,3,5,7,9{1},*p;P=一个;所以乘以p等于1;& and是地址操作符,例如,& and是变量p的地址;比如:include < stdio . h > main(){ int[]={1,2,3,4,5},*p=;printf...
指向一个指针p的指针变量a是什么意思?
1.一般来说*p=&a的表示方法是错的,*p=a和p=&a是正确的。2.*p=a的意思:将a的值赋给p指针指向的地址的值;3.p=&a的意思是:将a的地址赋给指针p;4.区别:*p是一个值;p是一个地址;两者完全不相同。5.*代表着p指向的地址的值,简单来说就是取值;&是取地址符号,取的是地址;p是...
int(*ptr)[m] ,int(*ptr)()
inta=12; intb; int*p; int**ptr; p=&a; //&a的结果是一个指针,类型是int*,指向的类型是int,指向的地址是a的地址。 *p=24; //*p的结果,在这里它的类型是int,它所占用的地址是p所指向的地址,显然,*p就是变量a。 ptr=&p; //&p的结果是个指针,该指针的类型是p的类型加个*,在这里是int **...
int a[10],*p=a与 int (*p)[10]一样吗
int p = &a; 是让p指向a,p 是个地址。你可以这样理解:int a;int &n=a;//定义引用n,它是变量a的引用,即别名 int (&n)= p;这样分开好理解了吧,&n 是一个引用,就是让n和p指向同一个地址。