指针变量打印字符串问题

int main()
{
char*str = "www.dotcpp.com";
    printf("str=%x,*str=%c", str, *str);
}

打印出的结果为

str=1e7e9c28,*str=w

想知道怎么样可以通过指针变量打印字符串

用printf()函数的%s格式说明符。

int main() {
    char* str = "www.dotcpp.com";
    printf("str=%s\n", str); // 使用%s打印字符串
    return 0;
}


这个程序会输出www.dotcpp.com。在printf()函数的格式字符串中,%s表示要输出一个字符串,对应的参数是一个指向该字符串的指针。因此,我们可以将指向字符串的指针直接作为printf()函数的参数,使用%s格式说明符打印出整个字符串。

该回答内容部分引用GPT,GPT_Pro更好的解决问题
可以通过指针变量打印字符串,原理是把字符串放到内存中,然后用指针指向这个内存地址,最后遍历该指针指向的内存地址,就可以输出该指针指向的字符串信息。

具体的步骤如下:

  1. 首先要在内存中定义一个字符数组,用来存储要输出的字符串信息。
    char str[10] = "Hello";  // 定义一个字符数组,用来存储要输出的字符串
    
  2. 然后定义一个指针变量,并把该变量指向上述定义的字符数组。
    char *p = str;  // 定义一个指针变量,并把该变量指向上述定义的字符数组
    
  3. 最后遍历该指针变量指向的内存地址,就可以输出该指针指向的字符串信息。
    while(*p != '\0')  // 遍历该指针变量指向的内存地址,直到遇到'\0'为止
    { 
     printf("%c", *p);  // 输出当前内存地址中的字符 
     p++;  // 指针变量 + 1
    } 
    
    以上就是通过指针变量打印字符串的方法,其中最关键的就是使用指针变量来遍历要输出的内容。当然我们也可以使用其他方式,如for循环、while循环等。
    如果回答有帮助,望采纳。

printf("str=%x,*str=%c", str, str);//%x以十六进制方式输出指针具体的值,str=%c只是输出字符串的首个元素,正确输出方式可用printf("str=%s\n", str);