【发布时间】:2018-08-21 18:00:56
【问题描述】:
在下面的代码中,我们将指针传递给一个字符串,它可以正常工作,但它不适用于指向整数的指针。我想知道为什么?
#include <stdio.h>
int main(){
char *astring = "afdv";
printf("%s",astring);
int a;
a = 1000;
int *ptr = &a;
printf("\n%d", ptr);
}
【问题讨论】:
-
不,您传递一个 single
char值(然后将其转换为int)。如果您的意思是在打印字符串时传递一个指针,那么这是非常不同的,因为printf知道如何使用"%s"格式处理这些指针。 -
请演示您在何处传递指向字符串的指针。你甚至没有传递一个 string... 也可以试试
printf( "%p\n", ptr )。然后阅读printf()上的手册。 -
在第一种情况下,"%c" 需要单个字符,然后您将其传递给取消引用的字符指针 (*astring),它是单个字符。正如您所说,它不是“指向字符串的指针”,而是&astring。一切都很好。 "%d" 需要一个整数值,而不是指针。如果你取消引用它(*ptr),那么它会起作用。
-
不要只是疯狂的实验。仔细阅读文档,看看哪些值必须与特定占位符配对。