繁体   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