C语言中 s=*pa+*pb;什么意思

2025-12-17 14:18:46
推荐回答(5个)
回答1:

指针变量pa 指向一个拥有某种类型的数的单元 ,这个单元里存放着一个某种类型的数a
指针变量pb指向一个拥有某种类型的数的单元 ,这个单元里存放着一个某种类型的数b
*pa+*pb即取出a和b的值相加 a+b 然后把结果赋值给s

回答2:

乱码的关键还是数据类型问题。char的值的范围(-128 ~ 127)

"字母Z向后错8位后在ASCII码表中进入了小写字母的范围"
pa=*pa+*pb;
if(*pa>'Z'||*pa>'z')
那是因为*pa的内容先被修改了,才做判断。当*pa原来是'Z'时,比如+9,就是99,进入了小写范围。这时你做判断if(*pa>'Z'||*pa>'z')就不对了。
先判断大小写,再分别对待,别嫌麻烦

我的代码
int main()
{
char s1[81];
char s2[81];

scanf("%s", s1);
scanf("%s", s2);

printf("\n");

unsigned char c1, c2; // 关键unsigned
for(int i=0; s1[i]!='\0' && s2[i]!='\0'; i++)
{
c1 = s1[i];
c2 = s2[i] - '0';

if(c1<'a') //大写字母(这里为了简单,默认都是英文字母)
{
c1 = s1[i] + c2;
if(c1>'Z')
c1 -= 26;
}
else //不是大写,那就是小写咯
{
c1 = s1[i] + c2;
if(c1>'z')
c1 -= 26;

}
s1[i] = c1;
}

printf("%s\n\n", s1);

return 0;
}

回答3:

假设
int a = 3;
int b = 5;
int s = 0;
int *pa;
int *pb;
pa = &a;
pb = &b;
s = *pa + *pb; //相当于a+b
s = 8;

*表示间接运算符,能够通过pa这个指针所指向的地址去找到该地址的变量。
在这里,pa = &a; *pa = 3;
&表示取地址符,&a就是取到a这个变量的地址

回答4:

pa和pb是两个指针,你又没提供其他内容,我姑且就认为是int型了。*pa和*pb就是取其内容
所以,s等于两个整数之和

回答5:

*是取值的意思,而pa和pb都是地址,整个就是取pa的值和pb的值赋给s