A 由于指针p指向变量a,即p==&a,所以*p==a,所以&*p==&a,而p==&a,所以&*p==p A
int a[3][2]={(0,1),(2,3),(4,5)};int a[3][2]={{0,1},{2,3},{4,5}};两种方式赋值不同,第一种数组的值分别为1,3,5,0,0,0,第二种是0,1,2,3,4,5 应该
区别很大。第一个int *p = a;这是把a给一个指针,一般a是指针或数组,否则可能会造成很大错误。int *p = &a;这是把a的地址给p,一般a可以是一个整型变量。int
int a=2;//定义变量a,初始化值2 int *p=&a;//指针p指向变量a,换言之,指针p储存了变量a的地址 int *q=p;//指针q储存了指针p储存的地址(变量a的地址)换言之,指针q指向变量a q//可以代表变量a的值 q//可以代表变量a的地址 这里...
内存地址加一!!//如果是元素的话应该这样表示:p=a[i].这时p指向的是数组内的元素,而*p=a意思是p里面的值是数组a的首地址,p自己本身也占有一定的内存,也占有一个地址,这个地址和数组a的首地址并不连续.p++之后p与数组a就没有什么关系了// //如a[]={1,2,3,};则a[0]=1,a[1]=2,a[...
c语言中*p=&a和p=&a只有一个区别就是指针初始化时间不同。p=&a:P是1维指针;p=&a:P是2维指针;p=&a示例:inta;int*p;a=5;p=&a;printf("valueis:%d.",*p);
书写是否有错?int a[5]={1,2,5,9,12},*p=a,*q=a+3; 是吗?相当于:int a[5]={1,2,5,9,12};int *p=a; // p 指向 a[0];int *q=a+3; // q 指向 a[3];q 乘 *p 等于 a[0] * a[3] = 1 * 9 得 9 q...
include <stdio.h>int main(){int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, *p = &a[3], b; b = p[5];printf("%d\n", b);} 因为*p=&a[3]; 表明将a[3]的地址赋值给p,此时p[0]=a[3],因此p[5]=p[0+5]=a[3+5]=a[8]。
这是C语言,当年我的成绩是优秀。这个很简单啊。首先它是定义了一个整型数组a,数组里有6个元素,分别是:a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5,a[5]=6,记住C语言里数组的下标永远是从0开始的。接着定义了一个指针变量p,*p=a的意思是把数组a的起始地址赋给指针变量p,即现在p...
后者相反,p是一个指针,指向一个int[4]的数组。所以归根结底,这里p是一个指针。那么,我的理解是,*p打印出来是这个int[4]的首地址,而不是这个数组里面的值。而且,p+1的话,地址相当于以int[4]为单位增加,而不是以int为单位增加。而,int *p=a这个例子,*p打印出来是a[0]里的值,故而...