若有定义:double x,*p;,则以下正确的赋值表达式是[].
来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 02:21:33
结果是3.原理如下:--是自减运算符,也就是说--p可以等同于p=p-1;因为p是地址,所以p的自减运算是相当于往前移一个位置,原来p是指向a[2],往前移一个位置,p就指向了a[1],所以*--p就
p[0]=a[1]是将a[1]数组的地址赋值给了p[0]为了更好的理解,我们定义一个int*q;q=p[0];这样*(p[0]+1)就等价于*(q+1)了,由于q是int型的指针并指向的a[1]的第0
答案是C解决这类题型首先要分清类型.A错,虽然p的类型是(int**),a的类型是(int**),但是数组名代表的地址也不能改变.B错,因为p[0]的类型是(int*),a的类型是(int**).C对
这个答案选B,因为p指向的变量为必须包含6个元素的指针再问:那0=
A.*说明是double类型的指针,存放相应的地址.
*(p+1)=3楼主追问chars[10]={‘A’,‘\0’,‘B’,‘C’,‘D’};则strlen(s)的值为strlen是计算字符串长度,遇到'\0'结束返回长度,所以是1structnum{
*p=a[0]*(p+1)=a[1]...*(p+5)=a[5]
a[3]p=a,*(p+3)=*(a+3)=a[3]
内存的排列是线性的,P的类型是int*,而inta4[4][10]的类型是inta(*)[10],要是一位数组就对了再问:二维数组的排列不就是线性的?a不就是代表其首地址?不就是地址的赋值?你的意思是
选择BAa表示4C*p表示的就是a的值也就是4D两个都是值
int*p=&x;
首先(*p)[3]是一个指针数组,意思就是p这个指针是指向一个含有3个元素的数组的,那么p指针每一次加1就相当于把p中存的地址加6(前提是int类型占2个字节,在VC中是占4个字节).举个例子:int
楼上回答很好.inta[5]={1,3,5,7,9},*p;等价于inta[5]={1,3,5,7,9};int*p;即p是一个指向整型的指针就好理解了
这是错的,p没有进行初始化再问:inta[]={1,2,3};int*p=&a[1];printf("%d",*(p++));printf("%d",*(p--));//为什么两次输出结果一样再答:自
p[0]就是*p就是p所指向的内存中的值&p是p这个指针本身的地址,&p的类型是int**&p[0]就是p[0]的地址,也就是p(&p)[0],就是*(&p),也是p*p,就是前面说的p[0]
a是个常量,不能变化,但是p是个指针变量,可以加减,p的加减与p的类型有关,如果p是个int则,每次加四个字节,就是int型的长度,其它的也是相同的.char每次加一个字节.p+5代表第六个数值的地址
A,p是一个指针,它存的是一个地址,而“&”是取地址符号,故p=&x表示把变量x的地址取出来存在指针p内,即让p指向x
p=&a[2],p指向了a的下标为2的元素,C语言的数组下标是从0开始的,下标为2指的是第三个元素,2,++(*p)将该元素增加1,2+1=3
选择D,这是一个二维数组指针的问题.
C)元素a[6]的地址