(&p)则是这样一种运算,返回当时声明p 时开辟的地址。显然可以用赋值语句对内存地址赋值。我们假设有这么两段内存地址空间,他们取值如下:(单位:H,16 进制)(如图4所示)假设有这么一段代码:(假设开辟空间时p 被分配给了3001H、3002H 两个位置)int *p;p=2003H;*p=3000H**p的值为多少?
比如“A&B”公司,就是“A”和“B”两间公司合并起来的。 6 在某些电脑语言,如java中,表示按位进行“与”运算。 7 英文拼写:ampersand 8 高级语言中的取地址符,如:“int a=0;int *p;*p=&a;”,意为取变量a的地址给指针p。 9C语言中两个&&表示与运算 如:while("a...
你的分析很正确,但也很错误。int 的大小取决于编译器,比如在纯C语言编译器TC2.0中,int 只占2个字节,但在VC&C-free这种C&C++编译器中,int 是占4个字节的。除了这些,你的理解还是很好的!再来分析你的程序问题——for(p=a;p<(a+10);p++)这一行就是不理解a+10,为什么不加20,假如...
1、取地址。单目运算符。用来取一个变量的地址。2、位操作中的与操作运算符。也就是常说的and操作,双目运算符。计算的时候按位计算,&两边操作数对应位上全为1时,结果的该位值为1,否则该位值为0。3、当两个&&一起用的时候,表示为逻辑运算中的与运算。逻辑运算结果只有0和1两种结果。一般在...
2、关于这个问题,确实有点绕,如果能理解你问的第3个问题,这个就有点眉目了。。。3、在二维指针当中(注意指针和数组是不一样的,只是有时候表达的东西没什么区别罢了),在二维指针中,分行指针和列指针,比如上面的a[3][4],如果用指针的形式表示的话,一共有3个行指针,一个列指针,每个行...
&&是logical-and, &是bitwise-and, 两者经常一样, 但也会不一样.非零视为true, (12 && 10) 相当於 (1 && 1), 结果是1.(4 && 2) 相当於 (1 && 1), 结果也是1.12的二进位是 (1100), 10的二进位是 (1010),(12 & 10) 的二进位结果是 (1000), 答案是 8, 若放在if中是...
&a表示的是&a[0],那&a的值当然和a的值一样了!为了有据可依,可运行下面的程序:include void main(){ char a[10]= {0};char p = a;char q = (char*)&a;q = 1;printf("a:d\n",a);printf("&a:d\n",&a);printf("*p:d\n",p);printf("*q:d\n",q);printf("a[...
int a[5]={2,4,6,8,10},*p,**k;p=a;//p指向a数组,p保存了a数组的首地址。a[0]是数组的首元素,所以*p的值就是a[0]的值。k=&p;//k指针指向p,k保存了p的地址。(k可以成为指针的指针)printf("%d",*(p++));//表达式“*(p++)”整体的值相当于*p的值,就是a[0]的值...
int(*)[3]这个东西是指向类型为int[3]的指针,也就是说是指向一个长度为3的整型数组的指针。比如:int a[5][3]; // 一个二维数组,第一维长度为5,元素类型为int[3]int (&r)[3] = a[2]; // 一个类型为int[3]的引用,指向a中的第三个元素 int (*p)[3] = &r; // 指针...
int a=9;int p=&a;的意思是一个普通int*型指针p指向了一个常量(指向的也可以不是常量),所以*p从语法上是可以改变的,但当前的内容是const型,所以只警告是否搞错了。这里还有一点需说明,一种观点认为,C中的const修饰的变量性质是变量,只是它的值不允许改变,而C++中的const修饰的就认为是常量...