已知:int i,j=7,*p=&i;,则与i=j;等价的语句是
*p=j;
设有定义:struct {char name[12]; int a; double b;}t1,t2;,
且变量均已正确赋值,则以下语句中错误的是( )
t2.name=t1.name;
下面程序的输出结果是( e )
#include<stdio.h>
void main()
{
char s[]="cent";
printf("%c\n",*s+2);
}
已知:int i,j=7,*p=&i;,则与i=j;等价的语句是
*p=j;
设有定义:struct {char name[12]; int a; double b;}t1,t2;,
且变量均已正确赋值,则以下语句中错误的是( )
t2.name=t1.name;
下面程序的输出结果是( e )
#include<stdio.h>
void main()
{
char s[]="cent";
printf("%c\n",*s+2);
}
第一题
&i是获取i变量的地址,p=&i是p指针指向i的地址,*p=j是对p指针指向的地址进行赋值, 因为p指向i的地址,所以i也被赋值了。
第二题
结构体t1和t2变量可以相互赋值的,但是结构体中的name是字符数组,也就等同字符指针,
对字符数组赋值是要改变数组的地址,但数组的地址不能改变, 所以t2.name=t1.name是错误的
对t2.name内容赋值应该用 strcpy(t2.name,t1.name);
第三题
s[]是字符数组,也就等同字符指针,s是数组的首元素的地址, *s就是获取数组首元素的值'c',等同s[0],加2运算是对c的ASCII码值加2,结果就是'e'