我簡單地做一個字符數組str.later我犯了一個char *p
它簡單地指向它,我可以訪問(行程)從開始到結束str
,我可以操縱使用p
的str
,意味着 p[i]='x';
(其中,i:一有效索引,x:任何字符)是否有效?實際上我試過它是工作,我的問題是沒有必要使用malloc給它記憶(即p = malloc(l * sizeof(char));)。可以使用char指針來操作它指向的char數組嗎?
#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'指向那個分配。 – 2014-10-01 11:38:52
我認爲解釋沒問題*'* p'必須指向有效內存*。 – usr2564301 2014-10-01 11:38:55
'p = str'表示'p'擁有'char'數組'str'的基地址。 – 2014-10-01 11:39:34