VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 135|回复: 5

[已解决]关于【实用C++】 基础入门教程 23课数组与指针的 一点问题

[复制链接]
58_avatar_middle
最佳答案
0 
在线会员 发表于 2020-2-28 20:00:47 | 显示全部楼层 |阅读模式
老师,你好。教学内容中的第四点 有些疑惑

用指针操作字符串数组:
定义两个字符数组输入如下:
char str1[50] = {0}, str2[] = "I Love cctry.com!";
用指针的方式,实现将 str2 拷贝到 str1 中。


// P23.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
        char str1[50] = { 0 }, str2[] = "I Love cctry.com!";
        cout << "str1 = " << str1 << endl;
        cout << "str2 = " << str2 << endl;

        char* pstr1 = str1, *pstr2 = str2;
        int lenstr2 = strlen(str2);
        for (int idx = 0; idx < lenstr2; idx++)
        {
                //str1[idx] = str2[idx];
                pstr1[idx] = pstr2[idx];
        }

        cout << "str1 = " << str1 << endl;
        cout << "str2 = " << str2 << endl;

        return 0;
}

循环语句中的  “pstr1[idx] = pstr2[idx]” 有些不明白,为什么这里能像数组一样使用? 谢谢!
最佳答案
18_avatar_small
2020-2-28 22:04:01
1607535644 发表于 2020-2-28 21:11
不太明白,上面没有定义指针数组。

不是定义了这个吗?
  1. char* pstr1 = str1, *pstr2 = str2;
复制代码

pstr1指向数组str1的首地址,相当于pstr1[]这种形式
pstr2指向数组str2的首地址,相当于pstr2[]这种形式


不知道这种解释行不行?关于【实用C++】 基础入门教程 23课数组与指针的 一点问题




上一篇:指针问题求助怎么简写
下一篇:不知道是怎么来写,,好多都变了
18_avatar_middle
最佳答案
4 
donate_vip 发表于 2020-2-28 22:04:01 | 显示全部楼层    本楼为最佳答案   
bestAnswer
1607535644 发表于 2020-2-28 21:11
不太明白,上面没有定义指针数组。

不是定义了这个吗?
  1. char* pstr1 = str1, *pstr2 = str2;
复制代码

pstr1指向数组str1的首地址,相当于pstr1[]这种形式
pstr2指向数组str2的首地址,相当于pstr2[]这种形式


不知道这种解释行不行?关于【实用C++】 基础入门教程 23课数组与指针的 一点问题
18_avatar_middle
最佳答案
4 
donate_vip 发表于 2020-2-28 20:29:17 | 显示全部楼层
这不是c语言指针的语法吗
58_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-2-28 21:11:12 | 显示全部楼层
天仿思冗 发表于 2020-2-28 20:29
这不是c语言指针的语法吗

不太明白,上面没有定义指针数组。 关于【实用C++】 基础入门教程 23课数组与指针的 一点问题
75_avatar_middle
最佳答案
18 
online_supermod 发表于 2020-2-28 21:59:07 | 显示全部楼层
我解释一下吧
nt main()
{



//你这里的2个数组1数组个数是50.数组2是I Love cctry.com  实际字节数
        char str1[50] = { 0 }, str2[] = "I Love cctry.com!";
        cout << "str1 = " << str1 << endl;//输出了数组1,2
        cout << "str2 = " << str2 << endl;

        char* pstr1 = str1, *pstr2 = str2;//指针指向了2个数组的首地址
        int lenstr2 = strlen(str2);//获取数组2的的实际大小或者长度
        for (int idx = 0; idx < lenstr2; idx++)//
        {
                //str1[idx] = str2[idx];
                pstr1[idx] = pstr2[idx];//  这里的idx指的是数组中的某一个,从0到lenstr2 大小的中的某一个,假如lenstr2是15  那么就是0到15中的某一个
        }

        cout << "str1 = " << str1 << endl;
        cout << "str2 = " << str2 << endl;

        return 0;
}
你没有定义指针数组 但是你用指针指向了该内存,
58_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-3-1 10:30:37 | 显示全部楼层
wl1383838438 发表于 2020-2-28 21:59
我解释一下吧
nt main()
{


我的理解:指针是一个变量,指针数组是一个存放指针的容器。

我能理解 *(pstr1+1)= a[1]、 *(pstr1+idx)=*(pstr2+idx)

但不能理解 pstr1[idx] = pstr2[idx] (这是指针数组之间的赋值对吧)

是因为  char* pstr1 = str1, *pstr2 = str2;//指针指向了2个数组的首地址
这条语句  将指针变量 pstr1变成了 指针数组pstr1[] 吗?

谢谢
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-6-2 03:50

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表