gpt4 book ai didi

字符类型指针内存分配?

转载 作者:行者123 更新时间:2023-11-30 19:51:13 25 4
gpt4 key购买 nike

#include<stdio.h>
#define ASIZE 50
void Reverse(char *str){
int Asize,i=0;
char temp;
// Find the length of the string
while(*(str+i)!='\0'){
i++;
}
Asize=i;
// string reverse
for(i=0;i<(Asize/2);i++){
temp = *(str+i);
//may be below is some error with first input method 1
//but for input method 2 it works perfectly
*(str+i) = *(str+(Asize-(i+1)));
*(str+(Asize-(i+1))) = temp;
}
}
int main()
{
//input method 1. (error aries while i pass the pointer as argument)
char *s = "abcxyz";
//input method 2 (works perfectly while as function parameter)
char s[ASIZE];
scanf("%s",s);

Reverse(s);
printf("%s",s);
}

总的来说,输入法 1 对于字符串的反转不能完美工作,但方法 2 可以。我的概念对char指针的内存表示不清楚。也许我不好正确地提出问题,但请有人让我清楚为什么方法 1 不起作用。预先感谢您的帮助。

最佳答案

"abcxyz" 实际上是一个 const char[7] 类型,可以衰减const char* 在某些情况下。

不是char*类型;尝试修改字符串的行为是未定义

另一方面,

char s[ASIZE]; 是具有自动存储持续时间的 char 数组。您可以随意修改其中的任何元素。

关于字符类型指针内存分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47938323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com