【发布时间】:2019-06-07 06:07:04
【问题描述】:
在 c 编程中当我们打印一个字符串时。我们没有使用 * 。但是当使用 printf 打印数字时,我们使用 *.那么它是如何理解的,我正在打印一个字符串或整数。理解使用 %s 运算符吗?
附上示例代码
#include<stdio.h>
int main(int argc,char* argv){
char data[]="This is an example of pointer";
char *pointerstringdata =data;
printf("print the string data is >> %s\n",pointerstringdata); /* Here we are not using * why? case -1*/
int numberdata =100;
int *pointerintdata=&numberdata;
printf("print the int data is >> %d\n",*pointerintdata); /* Here we are using * why? case -2*/
return 0;
}
【问题讨论】:
-
为什么会被否决?
-
您可以
printf("%d", numberdata)或printf("%d", *pointerintdata)。第一个是直接从变量传递数据,第二个是传递相同的数据但通过指针访问。但是,%s格式说明符需要一个指针,而不是一个值,因此您传递的是一个指针pointerstringdata。 -
@weather vane 感谢您的回复。我的问题是在两种数据类型之间。对于数字,我了解 numberdata *pointerintdata 之间的区别。对于打印数字,我们使用 *pointerintdata。为什么不是字符串?这就是为什么要提问。
-
您需要查找 printf 的格式说明符。 %s 需要一个指针,%d 需要一个(整数)VALUE。
-
@Vipin 在 C 中没有数据类型“字符串”。您可能想了解在 C 中如何使用
char数组来模拟“字符串”,以及数组如何与/不同一般的指针。
标签: c string printf c-strings conversion-specifier