指向字符串的指针在printf与cout区别

 

根据指针用法* 定义一个指针, &变量地址ios

 

int b = 1;测试

 

int *a = &b;ui

 

*a =1,但对于字符串而言并不是如此直接打印指向字符串的指针打印的是地址仍是字符串自己,具体看状况spa

 

定义:.net

 

char *m1 = "coconut is lovely";  指针

 

char *m2 = "passion fruit isnice";  code

 

char *m3 = "craneberry is fine";  blog

注:实际声明应该是const char *m1,缘由char *背后的含义是:给我个字符串,我要修改它,此处应该是要读取它,具体参考ci

 

 

测试输出:字符串


cout 打印*m1:

 

cout<<"Now use cout to print *m1="<<*m1<<endl;

 

打印输出:

 

Now use cout to print *m1=c

 

输出m1指向字符串的第一个字符

 

cout打印m1:

 

cout<<"Now use cout to print m1="<<m1<<endl;

 

输出

 

Now use cout to print m1=coconut is lovely

 

输出m1所指的内容,而不是m1指向的地址

 

 

printf打印%c\n", *m1

 

printf("Now use printf to print *m1=%c\n", *m1);

 

输出:

 

Now use printf to print *m1=c

 

m1指向的字符串的第一位的内容注意是%c而不是%s。由于是字符型,而非字符串型。因此如下表达错误: printf("Now use printf to print *m1= %s\n", *m1);

 

printf 打印 %d m1

 

printf("Now use printf to print m1=%d\n", m1);

 

输出:

 

Now use printf to print m1=4197112

 

m1是指针,输出m1所指向的地址。上面例子中的cout<<m1输出的是字符串内容。两者不一致,彷佛反常了。可是咱们能够使得它们行为一致。以下:

 

printf打印%s m1

 

printf("Now use printf to print m1= %s\n",m1);

 

输出

 

Now use printf to print m1= coconut is lovely

 

m1是指针,输出m1所指向的地址。使%s而非%d就能够使得m1不去表示地址而去表示字符串内容

 

 

 

完整例子:

#include <stdio.h>
#include <iostream>
using namespace std;

int main()
{
    char *m1 = "coconut is lovely";  
    char *m2 = "passion fruit isnice";  
    char *m3 = "craneberry is fine";
    char* message[3];                   
    int i;                              

    //cout *m1
    cout<<"Now use cout to print *m1="<<*m1<<endl; 
    //cout m1
    cout<<"Now use cout to print m1="<<m1<<endl;
    //cout (int)m1: 64位机char*类型大小位8B,用long转换
    cout<<"Now use cout to print m1="<<(int)m1<<endl;
    //printf %c *m1
    printf("Now use printf to print *m1=%c\n", *m1); 
    //printf %s *m1
    // printf("Now use printf to print m1= %s\n",*m1); 
    //printf %d m1 
    printf("Now use printf to print m1=%d\n", m1); 
    //printf %s m1
    printf("Now use printf to print m1= %s\n",m1); 
    /*                                       
    message[0] = m1;                    
    message[1] = m2;                    
    message[2] = m3;                    
         
    for (i=0; i<3; i++)  
    printf("%s\n", message[i]); 
    */
}


输出:

Now use cout to print *m1=c
Now use cout to print m1=coconut is lovely
Now use cout to print m1=4197320
Now use printf to print *m1=c
Now use printf to print m1=4197320
Now use printf to print m1= coconut is lovely

 

 

 

 

 

Ref:

 

  1. http://blog.csdn.net/feliciafay/article/details/6818009
相关文章
相关标签/搜索