第1个回答 2012-12-26
1.逗号表达式返回的是最后逗号之后的数,pad++,++pad,加两次之后就是7
32.
cd应该都不对,因为str3和str4都是指针,定义的时候并没有给他们分配自己的内存空间,所以不能
直接strcpy。
34.
static struct st s[3]这句定义了3个st的结构,a[0].n=5,a[0].next是 a[1]的地址,这个不会是6这么小的数字。a[1].n=7 a[1].next是a[2]的地址,a[2].n=9, a[2].next=0,就是NULL,p=&a[0],所以p就指向了a[1]。
p ++->n返回的就是p->n,也就是a[0].n,就是5
p->n++先返回p-> n再n++,所以还是返回5
(*p).n++和上面的是一样的,无非上面的是用指针获取,这个是得到实际的struct再获取
++p->n就是对p->n执行++操作再返回,就是5+1,也就是6
所以选d本回答被网友采纳
第2个回答 2012-12-26
第一题,实际是这样执行的,
sum=5;
pad=5;
pad=sum;
sum= sum+1;
pad=pad +1;
pad=pad+1;
结果是7.因为逗号的优先级比=号的低,可当做分号对待.
第2题.char *str4="string",这个字符串定义一般在常量区,内容不可更改,但有的编译器则不,所以有可能是错误的.
char *str3;这个指针如果声明在函数外则值为0,这一般是操作系统保留区,有可能你无权访问,如果定义在函数内,值是未知的,运气好的话能正确执行.
第3题,当然是D了,只有前++才能返回加后的值.那个'\0'类型错误,C++编译器是编译不过去的.
综上所述,我有80%的把握判定你的编译环境为TC2.0,一个古老的编译器.