&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("...
1, 它和n一样,是一个整数,可以做加减乘除,赋值等等一切整形变量能做的所有操作。所以 q = p+5, q = p这种操作是没有问题的。2, 不同的是,p还有一个操作是n所没有,那就是操作符*,称之为指向操作。因为p是一个指针变量,p里存的是一个内存地址,假设 p = 0x0000000F,那么 *p 就...
fgetpos(f, &q);r = fread(&t, sizeof(t), 1, f);if(r<1)break;if(t.name[0]==0) continue;if(key) { a = strstr(t.name , key);b = strstr(t.tele , key);if(a == 0 && b == 0) continue;}/*end if*/ if(p) *p = q;if(s) memcpy(s, &t, sizeof(t...
在C语言中,int **pp,*p,a=10,b=20; 这行代码声明了一个指向整型指针的指针变量pp,一个指向整型的指针变量p,以及两个整型变量a和b,其中a初始化为10,b初始化为20。接下来的代码行是pp=&p。这里将指针p的地址赋值给了指针的指针pp,意味着pp现在指向p这个指针。紧接着是p=&a,这行代码...
*a+1第一列第二个元素的地址...&a是整个二维数组的地址,&a+1是内存中紧跟a[5][6]这块区域的地址 (*p)[6]这里的p的效果等于a,也是第一列的地址 p=a p是第一行第一个元素的地址,a 是第一行的地址 两者代表的意义不是一个等级,编译会出错 而且这样赋值没有意义 ...
p+6 取出指针p中存放的数据然后加上6 (p+6) 取出由地址p向后偏移6个单位的地址上存放的数据。例如 int a[100]={1,2,3,4,5,6,7,8,9,10} int *p=a;p+6 则把a[0]=0变为a[0]=1+6=7 (p+6)则是a[7] 的值
正确答案是D A错误,因为a[10]代表一个字符是吧,不能赋值字符串 B错误是因为 数组名不能当左值,也就是数组名不能被赋值 C和A同样的错误,*p代表的是a[0]D是正确的给指针赋值字符串是可以的
三目是需要三个操作数的意思,比如:a=c>b?c:b;例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二...
pa=&a[m-1];//初始指向a最大数 while(pa>=a)//从a最大数开始 { flag=0;if(*pa<=*pb)//找到第一个a小于等于b,就把b元素插入到a元素后面(a移位){ flag=1;move1(pa+1,a,50);//a当前元素之后的元素向后移1位 (pa+1)=*pb;break;} pa--;} if(!flag)//如未发生位移...
答案:B p = &a ;p指向a的存储空间 a= *p + b; *p此时a的存储数值为10,即a = 11。