C语言VOID函数STRING开始SAD

Python017

C语言VOID函数STRING开始SAD,第1张

fun(p)p没有指定内容

调用fun时,fun会在堆栈中开设自己的参数变量s,存放调用时传入的变量内容,则入口fun后,s中存放的是没有指定内容的p变量的内容

给s赋值后,fun函数返回,由于fun函数返回后会自动丢弃申请的变量s,所以这个赋值main看不到

printf输出将仍然是原先没有指定内容p指向的字符串,应选择D

如果想调用fun后令p指向a,则需要:

void fun(char **s) { static char a[10]strcpy(a,"STRING")*s=a}

main函数调用:fun(&p)

整个表达式由两个运算符组成,根据 运算符优先级 理解:

先看:(diff <0)?(-diff):diff 部分,这个是 boolFun ?A:B 三目运算符,如果表达式boolFun成立,则取A的值,否则取B的值。即如果diff <0,则取其相反数(-diff),否则就是diff本身,这个表达式的目的是保证diff 为非负数。

即:(diff <0)?(-diff):diff = |diff|

然后是 += : 增赋值。 那么 sad += |diff| 就是 sad = sad + |diff|

这些都是基本的运算符知识,多看下书理解下就明白了。