1

私は標準を読みましたが、まだ確信が持てません:

#include <stdio.h>
#include <string.h>

void repl(char *restrict ap){
    char *cp=strchr(ap,(int)'m');
    *cp='M';
}

int main(){
    char arr[] = "example";
    repl(arr);
    puts(arr);
    return 0;
}

関数replではstrchr、オブジェクトを変更するための別のポインターを取得していました。結果は、最初の文字列が にm置き換えられた文字列になると思いMます。

しかし、これは未定義の動作でしょうか?

はいの場合、ap[cp-ap]='M';代わりに使用するのは*cp='M';どうですか?

4

3 に答える 3