正确引用数组元素的 是 *(a+2), 它等同 a[2];(p+5) 错在超界了。如果是 *(p+2) 或 *(p+4) 那么也是对的。 *(p+5) 指向 a[5], 按声明,下标最大到 a[4]。&a[5] -- 也是下标超界 a+2 是 a[0]+2, 不是 引用 1个 数组元素,而是表达式。
22. char a='aa'; a是字符变量,只能存储一个字符!23. %c 打印字符 %d 打印整数,至于是什么值,请对照ASCII表查看!33. 答案:A。 但楼上解释均有误!void (*pf)(); 定义函数指针pf,指向返回值为void的函数,参数任意 pf = fun; 正确!pf = &fun; 正确!C...
这个我知道,以前我也遇到过这种情况。在Turbo C下运行就能正确输出。首先要改正一下你的输入错误,把双引号改成半角的单引号,输出一个是7一个是3。再来看为什么输出是7、3?首先清楚:strlen函数是遇到结束符'\0'才终止的。问题出在:char p[]={'a','b','c'},p[]你没指定长度,系统就不...
"(char*)" 是C式的类型转换, 就是把一个值转换为 字符指针 类型 '&'是取地址/取引用 运算符," &p"的意思就是 取得变量p的内存逻辑地址。然后把这个逻辑地址解释为 字符指针类型 (char *)
把它分开来看:int a = 5;int* p1 = &a;int* p2;选项A.*p1 = 10:因为p1存着a的地址,所以*p1就是a, 相当于a = 10,所以没问题 选项B.p2 = &a:因为和p1的赋值方式一样,都是a的地址,所以可以通过编译 选项C.*p2 = 10:p2还没初始化,属于野指针(也就是不知道指向那块内存...
int main(){ int a,b;char ch;printf("请输入x=");scanf("%d",&a);printf("请输入y=");scanf("%d",&b);printf("请输入需要进行的运算:");scanf("%c",&ch);switch(ch)case '+':printf("x+y=%d\n",a+b);break;case '-':printf("x-y=%d\n",a-b);break;case '*':...
p=&a;//&a的结果是一个指针,类型是int*,指向的类型是int,指向的地址 是a的地址。 *p=24;//*p的结果,在这里它的类型是int,它所占用的地址是p所指向的地 址,显然,*p就是变量a。 ptr=&p;//&p的结果是个指针,该指针的类型是p的类型加个*,在这里是int **。该指针所指向的类型是p的类型,这里是...
code = (char)('a' + (char)i);写错了。应该把数字转换为字符。。('a' + (char)i)里应该是int型。
选B。分析:A 执行语句:p=p+4;后,只是p的值发生了变化,a的值不会变为7。B 执行语句:p=p+4;后,指针p移动4个位置。正确。C 执行语句:p=p+4;后,*p的值不一定是NULL。D 执行语句:p=p+4;后,程序不会报错。
short t=12+'a';char c='a'+1;//以下两行都错误,因为'a'+y与'a'+x的结果的类型都是int,不能隐式转换为char类型,//但可以进行强制类型转换 //char m='a'+y;//char ch='a'+x;char m=(char)('a'+y); //强制类型转换 char ch=(char)('a'+x); //强制类型转换 byte n...