簡體   English   中英

是否可以將指向字符的指針(在給它分配字符串之后)傳遞給方法並在不使用數組的情況下修改該字符串,為什么不這樣做?

[英]Is it applicable to pass pointer to character (after assigning string to it) to method and modify this string after without using array and why not?

我想使用指向char的指針將字符串傳遞給ac函數並對其進行修改,這給了我分段錯誤。 我不知道為什么? 注意*:我知道我可以將字符串傳遞給字符數組來解決問題

我試圖將其傳遞給字符數組,並傳遞給函數名稱數組,它可以工作,但是我需要知道將指針傳遞給字符的問題。

void convertToLowerCase(char* str){

    int i=0;
    while(str[i] != '\0')
    {
        if(str[i]>='A'&& str[i]<='Z'){
            str[i]+=32;
        }
        i++;
    }
}

int main(void){

    char *str = "AHMEDROSHDY";
    convertToLowerCase(str);
}

我期望輸出str為“ ahmedroshdy”,但實際的輸出分段錯誤

這(您有char str*這是一個語法錯誤,已修復):

char *str = "AHMEDROSHDY";

是指向字符串文字的指針,因此不能修改,因為它存儲在只讀存儲器中。

您在這里修改它str[i]+=32; ,這是不允許的。

按照@xing的建議,改用數組,即char str[] = "AHMEDROSHDY";

更准確地說:

char *str = "AHMEDROSHDY";

“ str”是指向字符串文字的指針。 C中的字符串文字不可修改

在C標准中:

在以下情況下,行為是不確定的:...

  • 程序嘗試修改字符串文字

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM