当前位置: 首页> 汽车> 行情 > 十大网站建设公司排名_网页制作成品下载免费_四川旅游seo整站优化站优化_免费建网页

十大网站建设公司排名_网页制作成品下载免费_四川旅游seo整站优化站优化_免费建网页

时间:2025/8/10 7:00:40来源:https://blog.csdn.net/u013230291/article/details/144011420 浏览次数: 0次
十大网站建设公司排名_网页制作成品下载免费_四川旅游seo整站优化站优化_免费建网页

前言:温习下以前学过的C语言知识,温故而知新。

实例说明

本文用一段实例代码阐述指针和字符串的联系。

#include <iostream>
#include <cstring>
int main()
{using namespace std;char animal[20] = "bear";const char * bird = "wren";char * ps;cout << animal << " and ";cout << bird << "\n";cout << "Enter a kind of animal: ";cin >> animal;ps = animal;cout << ps << "s!\n";cout << "before use strcpy(): \n";cout << animal << " at " << (int *)animal << endl;cout << ps << " at " << (int *)ps << endl;ps = new char[strlen(animal) + 1];strcpy(ps, animal);cout << "after using strcpy(): \n";cout << animal << " at " << (int *)animal << endl;cout << ps << " at " << (int *)ps << endl;delete[] ps;return 0;
};

代码输出:

代码中语句:const char * bird = "wren";以这种方式使用const意味着可以用bird来访问字符串,但不能修改它。

语句:

cout << animal << " and ";
cout << bird << "\n"; 

这两个语句表明:给cout提供一个指针,它将打印地址,但如果指针类型为char*,则cout将显示指向的字符串,此处animal也是一个char类型的地址,在C++中将字符数组名解释为字符数组的首地址。 如果要显示字符串的地址,则必须将这种指针强制转换为另一种指针类型,如*int。因此,ps被现实为fox,而(int *)ps被显示为字符串的地址。

语句:ps = animal;将animal赋给ps并不会复制字符串,而是只复制地址,这样两个指针将指向相同的内存单元。

下面这两条语句是为了获得animal所指向字符串的副本。

ps = new char[strlen(animal) + 1];
strcpy(ps, animal);

语句:ps = new char[strlen(animal) + 1];字符串"fox"不能填满整个animal数组,为了防止浪费不必要的空间,使用strlen()来确定字符串的长度,并将它加1来获得包含空字符时该字符串的长度,随后程序用new来分配刚好足够存储该字符串的空间。

接下来,需要将animal数组中的字符串复制到新分配的空间中。将animal赋给ps是不行的,这样只能修改存储在ps中的地址,从而失去程序访问新分配内存的唯一途径。需要使用库函数strcpy();

strcpy(ps,animal);//copy string to new storage

strcpy()函数接受2个参数。第一个是目标地址,第二个是要复制的字符串的地址,在使用该函数前,需确定ps有足够的空间来存储animal所指向的字符串,所以此处用strlen()来确定所需的空间,并使用new获得可用的内存。通过new和strcpy,获得了fox的两个独立副本。如上图中输出结果中显示的两个不同的字符串地址。 

总结

将字符串复制到数组中,初始化数组时,请使用=操作符。否则请使用strcpy()。

char food[20] = "carrots";
///以下形式也可以
strcpy(food,"flan");

如果在使用strcpy()函数时,要存储的字符串长度超过了字符数组的长度,程序可能会产生未知的错误,这一点需要特别注意。

应使用strcpy()或stmcpy()函数而不是使用赋值操作符来将字符串赋给数组。

 

关键字:十大网站建设公司排名_网页制作成品下载免费_四川旅游seo整站优化站优化_免费建网页

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: