단순히 난 p
를 사용 str
가 p[i]='x';
(어디 수단 조작 할 수 있으며, i는 str
을 종료 시작 (여행)에 액세스 할 수 있고, 단순히 그것을 가리키는 char *p
을 한 char 배열 str.later을 유효한 인덱스, x : 임의의 문자)가 유효합니까 ?? actully 내가 그것을 노력하고, 내 질문은 거기에 malloc (즉, P = malloc (l * sizeof (char));) 사용하여 메모리를 줄 필요가 없다는 것을 시도했다.가리키는 char 배열을 조작하기 위해 char 포인터를 사용할 수 있습니까? A :
#include<stdio.h>
#include<string.h>
int main()
{
char str[20];
char *p;
scanf("%s",str);
printf("%s\n",str);
int l=(int)strlen(str);
// printf("l= %d\n",l);
//p=str;
//p=malloc(l*sizeof(char));
p=str;
int i;
for(i=0;i<l;++i)
printf("%c-",*(p+i));
printf("\nNow p=%s\n",p);
p[1]='x'; // it is valid , but difficult to understand?? we didnot give it memory,but it can manipulate the str as well.
printf("After changes made\n",p);
printf("p=%s\n",p);
printf("str=%s\n",str);
return 0;
}
네, 괜찮습니다. 'char str [20];'는 20 바이트를 할당하고 그 할당을 가리 키기 위해'p'를 사용하고 있습니다. –
*'* p'는 유효한 메모리 *를 가리켜 야합니다. – usr2564301
'p = str'은'p'가'char' 배열'str'의 기본 주소를 가지고 있음을 나타냅니다. –