shaohehe 2015-10-19 13:31 采纳率: 50%
浏览 1413
已采纳

一个关于指针和数组的问题

#define _CRT_SECURE_NO_WARNINGS
#include "stdlib.h"
#include "stdio.h"
#include "string.h"

int main()
{
char buf1[100] = { 0 };
char buf2[100] = { 0 };
char *p1 = buf1;
char *p2 = buf2;

strcpy(p1, "abcdefg");
printf("p2,%d\n", p2);
printf("buf2,%d\n", buf2);

while (*p1 != '\0')
{
    *p2++ = *p1++;
} 

printf("p2,%d\n", p2);
printf("buf2,%d\n", buf2);
printf("p2,%d\n", *p2);
printf("buf2,%d\n", *buf2);
system("pause");

有这样代码,为什么运行出来的结果是这样 p2和buf2地址会差7?图片说明

  • 写回答

3条回答 默认 最新

  • 没法说你 2015-10-19 13:40
    关注

    因为你在while循环中对p2做了自加运算,最终p2指向了字符串的末尾\0,而buf2一直没动,一直指向字符串的开头,自然会差7。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 SQL Server下载
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求