我是指针的初学者。完成整数数组和指针后,我转向字符数组和指针。我期待相同的结果,但它很奇怪。
int main() {
char chararray[20]="Char Array";
void printarray(char *);
void printarraydirect(char * );
printf("Passing chararray to funtion printarray\n");
printarray(chararray);
printf("Printing directly as c in printarraydirect function");
printarraydirect(chararray);
return 0;
}
void printarray(char *c){
int i=0;
//while(c[i]!= ' ')-----------------------> checks for empty space
while(c[i]!='\0')
{
printf("%c",c[i]);
i++;
}
printf("\n");
}
void printarraydirect(char * c){
printf("Printing c-------------->");
printf("%s\n",c);
int i=0;
printf("Printing c[i]-------------->\n");
// shows error here , if so why didnt it show me error in printarray function. and why didnt it print the whole array when printed c in printarray function..
printf("%s\n" c[i]);
}
最佳答案
首先,您在 printf("%s\n"c[i]);
行中缺少一个逗号。其次,c[i]
是单个 char
(数组的元素类型),因此 %s
格式不正确 - 它应该是 %c
打印单个字符。或者,如果您希望从该点开始打印整个字符串,则需要传递该元素的地址 (&c[i]
),但在这种情况下与 c 相同
因为 i
为零。
关于c++ - 字符数组和指针的基本混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30841663/