设有定义float a=2
来源:学生作业帮助网 编辑:作业帮 时间:2024/05/17 05:59:08
(*p)[2]=a表示将p定义为一个指向含2个元素的一维数组的指针变量,那么二维数组就可以看作是一维数组a[3],其中每一个元素都是一个一维数组,a[1]={1,2},a[2]={3,4},a[3]=
**(p+2),*p[2]这两个表达式是等价的,当然,**(p+2)=*p[2]是一个赋值表达式,最终的值还是a[2][0],即5
8再问:为什么呢,怎样算得再答:可以自己在程序上运行一下,我说的未必对,实验是最有力的说明
a+=b等同与a=a+b,这样a=30,b=20a-=b等同与a=a-b,这样a=-10,b=20a*=b等同与a=a*b,这样a=200,b=20a/=b等同与a=a/b,这样a=0,b=20(因为
选B因为&a是一个指向数组的指针,而p是一个指向整型的指针,二者不是同一个概念.
按照运算优先级,先计算b%=2,由于是int型变量,则3%2=1,a+=(b%=2)即为a+=1,结果为21
int(*p)[2]//定义指向一维数组的指针;p=a//将首行的地址赋给p.此时,*p的值为二维数组a的首行的地址,**p即为首行第一个元素的值,即1;p++//此时p指向二维数组a的第二行,*p的
5/2因为除号两边都是整数,所以按整型变量计算,5/2=2所以d2=d1+5/2=1+2=3如果是5.0/2就是3.5了
不正确,C语言不允许对数组的大小作动态定义,而n是变量,只是不允许的...
1)这个是要求什么表达式的值呢?后面的除2(/2)完全没有作用啊,执行后x=2,因为x是整型;若是x=((float)(y)+0.5)/2,执行后x=1;2)逗号(,)运算符求职顺序为自左至右,所以,
选c,p[0]指向a[1],也就是&a[1][0],二维数组在内存中的存储方式和一维数组一样也是顺序存放的,所以p[0]+1就是a[1][0]的下一个元素
一步步分析:*p=&n;为定义指针p,同时指向n的地址;m=*p;为对m重新赋值,此时*p为对地址&n取值,即n的值5,所以m值变为5;但此语句不是指向操作,本质上说可以是int=int操作,所以p的
答案为D*aa[2]数组指针aa[0]aa[1]为数组名,分别为“abcd”"ABCD"的首地址也就是‘a’和‘A’的地址(详情参考指针那方面知识)A选项应该为“abcd”和“ABCD”的地址B选项是
*p=x是定义了一个int型的指针p,并给这个指针赋值为x(x为一个数组,实际上也可以看做int的指针)p++就是取出p的当前值,然后把指针指向下一个元素,p+i就是取出指向第i+1个元素的指针.所以
char*类型的数组指的是每个元素都是char*指针char*指针是指向字符类型的所以aa数组的两个元素各自存放了字符'a'和‘A’的地址A)答案不对aa数组元素是两个char*字符类型的指针B)aa
a[1][0]='3',a[1][2]='\0'CharacterstringsarenullterminatedinC.
0啊,首先那个二维数组定义代表每一行有3列,但是不确定多少行,后面赋值每一个大括号中间是一行的数,其余自动补0啊.我记得是这样
B.*p=*(a+2)=a[2]=2
宏定义就是把出现的N和Y(n)用后面的表达式替换掉而已所以这里的z=2*(N+Y(5+1));等价于z=2*(3+4*6)=54所以选D
答案选Bp = a;让a指向int a[2][2]的int a[][2];p++让p指向int[][2]的第二个地址,int a[1][2]的地址,所