c++ - 字符数组和指针的基本混淆

标签 c++ c arrays string pointers

我是指针的初学者。完成整数数组和指针后,我转向字符数组和指针。我期待相同的结果,但它很奇怪。

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/

相关文章:

找不到错误,但它给了我一个

c - 使用指针的通用冒泡排序程序

c - 如何使用 char 将字符串传递给 fopen C

javascript - 按对象键过滤对象数组

c++ - 在 VC++ 2010 中使用 C++ 技术报告 1 (TR1)

C++:隐藏一些函数

php - 更改 array_walk 函数中的数组键?

java - 在java中从另一个CSV字符串中删除一个字符串CSV元素

c++ - 为什么 std::to_string() 没有模板化?

android - 仅通过 native 代码检查 apk 中是否存在目录(文件夹)