4Manuals

  • PDF Cloud HOME

在“ C”程序中,指针用于存储字符,例如char * ptr =“ abc”,那么如果您打印'ptr',则为什么要打印abc Download

    获取Hough线的交点OpenCV C ++ 如何将字符串“ text1”设置为包含项目text1,text2,test3的组合框的选定项目? 为什么System.Net.Mail.MailAddress构造函数在域部分中解析带有斜杠“ /”的电子邮件? Android 10,API29:在应用程序文件夹中使用C ++库编写文件会使应用程序崩溃 Unity-LineRenderer没有出现在版本(2D)上 按下按钮后,电话中未显示通知 ASP.net,使用WebConfig httpErrors重定向到区域内的控制器不起作用 获取会议室详细信息 我们如何将参数Line转换为Station? 网络核心:查找实体框架核心的主键和反射

指针主要用于存储其他变量的地址,如下面的代码,

char a='A',*p;
p=&a;
printf("p: %p *p: %c p: %c\n",p,*p,p);

output: p: 0x7ffc81b8d9ef *p: A p: �

1。从上面的输出中,如果我们想打印'p'值,那么它就是垃圾值。

在字符串中

char *p ="A";
printf("p: %p *p: %c p: %s\n",p,*p,p);

output:p: 0x55ce091de714 *p: A p: A

2。从上面的输出中,如果我们要打印'p'值,则将其打印为A。

从1和2开始,'p'仅用于存储地址,但是在第二种情况下,为什么要打印总字符串,而 为什么在第一种情况下无法打印值。

我们如何确保这一点?

1 个答案:

答案 0 :(得分:0)

  

1。从上面的输出中,如果我们想打印'p'值,那么它就是垃圾值。

%c转换说明符期望其自变量具有类型char。 p的类型为char *,并存储a的地址。由于这种类型的不匹配,其行为是 undefined ,并且输出实际上可能是任何东西。一种可能是printf试图将p的第一个字节解释为char,但是该值可能超出了基本字符集中可打印字符的范围,因此您可以系统使用的任何扩展字符集中的字形。

  

2。从上面的输出中,如果我们要打印'p'值,则将其打印为A。

%s转换说明符希望其自变量具有类型char *并指向 string 中的第一个字符。然后,它将打印该字符串的每个连续字符,直到看到字符串终止符为止。如果您的字符串是"ABC",那么输出将是p: <some address> *p: A p: ABC。



Similar searches
    用R中的函数指定参数名称 修补支持组-UserFor和Status的写入权限 在Sempahore上缓存柏树 Android Studio无法解析方法SetOnItemClickListener(Java)/帮助 Oracle SQL Loader:数据文件中的FILLER字段超出最大长度