我讀的標準,但仍不能確定:我可以在此函數中使用限定符限定符嗎?
#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';
?
是的,但在這種情況下並沒有表明任何東西。 AFAICT,您需要在參數列表中使用兩個指針變量才能發揮作用。我看不出任何會破壞你所展示的代碼的限制。 –
文字如'm''已經有'int'類型。所以不需要施放它們,無論如何,即使類型不同,無論如何,演員陣容並不是一個好主意。 –