当前位置: 首页 > wzjs >正文

新手学做网站步骤seo服务商排名

新手学做网站步骤,seo服务商排名,上海网站开发制作公司,自己建一个网站需要多少钱?1 引言 字符串的本质就是字符数组,字符串数组本质上就是二维字符数组。但是在指针的使用上,字符和数值是类似的,但是字符串和数值数组上有一些区别。 2 字符指针的使用 使用步骤,也是分三步:声明、初始化、访问。 …

1 引言

字符串的本质就是字符数组,字符串数组本质上就是二维字符数组。但是在指针的使用上,字符和数值是类似的,但是字符串和数值数组上有一些区别。

2 字符指针的使用

使用步骤,也是分三步:声明、初始化、访问。

代码示例:

#include <iostream>
using namespace std;int main() {// 声明并初始化字符变量char str = 't'; // 单引号用于字符类型// 声明并初始化字符指针char* str_ptr = &str;// 访问字符值cout << "字符变量值: " << str << endl;            // 直接访问cout << "指针访问值: " << *str_ptr << endl;        // 解引用访问// 访问指针地址(需要转换为void*避免字符串输出)cout << "指针地址: " << (void*)str_ptr << endl;// 修改指针指向的值*str_ptr = 'a';cout << "修改后的字符值: " << str << endl;cout << "修改后的指针值: " << *str_ptr << endl;return 0;
}

运行结果:

代码解读:

① 声明一个字符变量;

② 声明一个字符指针变量,将指针变量指向字符变量的地址;

③ 通过解引用的方式访问指针指向的内容;

④ 访问指针的值或者说字符常量的地址,前面必须添加(void*)原因:cout 对 char* 的特殊处理,自动输出从该地址开始直到 '\0' 的所有字符内容,而非地址值;

⑤ 通过解引用的方式,修改字符指针指向的内容,同时打印字符变量,字符变量的值也跟着发生了变化。

3 字符串指针的使用(char*)

 也是分三步进行说明:① 声明;② 初始化;③ 访问。

char*的使用形式有两种,一种是指向字符数组,一种是指向字符常量。

3.1 指向字符数组

代码示例:

   //字符串// 字符数组形式声明字符串(包含隐含的'\0')char strs[] = { "Hello" }; // 等价于 char strs[] = "Hello";// 声明指针并指向字符数组首地址char* strs_ptr = strs; // 此时指向'H'的位置// 验证存储空间大小cout << "数组大小: " << sizeof(strs) << endl; // 输出6(5字符+'\0')/*---- 访问操作 ----*/// 1. 输出首地址(需要void*类型转换)cout << "首地址: " << (void*)strs_ptr << endl;// 2. 访问整个字符串(自动读取到'\0'结束)cout << "字符串内容: " << strs_ptr << endl; // 输出"Hello"// 3. 逐个字符访问(注意优化strlen调用)const int len = strlen(strs); // 避免每次循环重新计算长度for (int i = 0; i < len; i++) {cout << "字符" << i << ": " << *(strs_ptr + i) << endl;// 等价于 strs_ptr[i] 或 strs[i]}/*---- 修改操作 ----*/// 修改单个字符*(strs_ptr + 1) = 'T';       // 通过指针修改// strs[1] = 'T';            // 等价数组操作cout << "修改单字符: " << strs << endl; // 输出"HTllo"// 修改整个字符串strcpy_s(strs, "World");  // 更安全的版本(C11)cout << "修改全字符串: " << strs << endl; // 输出"World"

运行结果:

代码解读:

① 以字符数组的形式声明一个字符数组(字符串);

② 明明并初始化指针变量,指针指向字符数组的首地址;

③ 通过指针变量访问整个字符串;

④ 通过解引用的方式访问字符串的每个字符;

⑤ 通过解引用的方式修改单个字符;

⑤ 通过copy的方式修改整个字符串

3.2 指向字符常量

指向字符串常量的形式大部分和指向字符数组的一样,唯一的不同:当指针指向字符串常量以后无法修改字符串中的字符。

代码示例:

    // 声明指针并指向字符数组首地址const char* strs_ptr = "Hello"; // 此时指向'H'的位置/*---- 访问操作 ----*/// 1. 输出首地址(需要void*类型转换)cout << "首地址: " << (void*)strs_ptr << endl;// 2. 访问整个字符串(自动读取到'\0'结束)cout << "字符串内容: " << strs_ptr << endl; // 输出"Hello"// 3. 逐个字符访问(注意优化strlen调用)const int len = strlen(strs_ptr); // 避免每次循环重新计算长度cout << "字符长度:" << len << endl;for (int i = 0; i < len; i++) {cout << "字符" << i << ": " << *(strs_ptr + i) << endl;// 等价于 strs_ptr[i] 或 strs[i]}/*---- 修改操作 ----*///修改指针指向的内容strs_ptr = "World";cout << strs_ptr << endl;// 修改单个字符//*(strs_ptr + 1) = 'T';       // 通过指针修改

运行结果:

 代码解读:

主要讲一下和指向字符数组的差别之处:

① 执行字符串常量时,指针的类型需要时const char*,如果是char*就会报错;

② 无法修改字符串中的字符,原因:字符串常量(如 "Hello")存储在​​只读内存区​​(.rodata 段或代码段),操作系统会保护该区域禁止写入。

4 字符串数组指针(char*)

字符串数组可以看成一个二维的字符数组。可以用数组指针进行操作。使用的步骤也分为三步:① 声明;② 初始化; ③ 访问。

代码示例:

 // 声明并初始化指针数组:每个元素指向一个字符串常量
const char* str_arr_point[] = { "Apple", "Banana", "Cherry" };// 访问整个字符串
string tt1;
tt1 = str_arr_point[0]; // 将指针指向的字符串"Apple"赋值给string对象
cout << tt1 << endl;   // 输出: Apple// 访问字符串中的单个字符
char tt2;
for (int i = 0; i < strlen(str_arr_point[0]); i++) {tt2 = *(str_arr_point[0] + i); // 等价于 str_arr_point[0][i]cout << tt2 << endl;            // 逐字符输出: A/p/p/l/e
}// 打印地址(特殊处理)
cout << "地址 = " << str_arr_point[0] << endl;     // 直接输出会解析为字符串内容(输出"Apple")
cout << "地址 = " << (void*)str_arr_point[0] << endl; // 正确输出指针地址(如0x1049644)// 修改指针数组的元素
str_arr_point[0] = "test";      // 合法:修改指针指向新字符串
// *(str_arr_point[0] + 1) = 't'; // 非法!尝试修改常量字符串内容(会崩溃)cout << str_arr_point[0] << endl; // 输出: test

运行结果:

代码解读:

① 声明一个指针数组,类型是const char*,大小是3;

② 初始化指针数组,三个元素分别指向"Apple"、"Banana"、"Cherry"的首地址,也就是字符A、B、C的地址,字符串常量(如 "Apple")本身代表其首字符的内存地址​​;

③ 访问整个字符串,指针数组元素访问的是整个字符串;

④ 通过解引用的方式访问字符串里的每个字符;

⑤ 访问字符串的地址,cout遇到char*或const char*类型时,​​不会输出指针地址,而是输出其指向的字符串内容​​。要访问地址,将char*或const char*类型强制转换为void*类型,使 cout 不再将其识别为字符串指针,而是作为普通内存地址输出。

⑥ 修改指向的字符串,数组指针的元素可以重新指向其他字符串常量的地址。注:无法通过指针的方式去修改字符串中的字符,*str_arr_point[0] + 1 = "t";这句代码会报错。原因:字符串常量(如 "Hello")存储在​​只读内存区​​(.rodata 段或代码段),操作系统会保护该区域禁止写入。

5 总结 

声明和初始化访问内容访问地址修改
字符指针


char str = 't';
char* str_ptr = &str;

*str_ptrstr_ptr可修改
字符串指针——指向字符数组

  char strs[] = { "Hello" };
   char* strs_ptr = strs; 

*(strs_ptr + i)(void*)strs_ptr 可修改字符串,也可修该字符串元素
字符串指针——指向字符串常量const char* strs_ptr = "Hello";*(strs_ptr + i)(void*)strs_ptr 可修改字符串,不可修该字符串元素
字符串数组指针const char* str_arr_point[] = { "Apple", "Banana", "Cherry" }*(str_arr_point[0] + i)(void*)str_arr_point[0]不修改字符串,也可修该字符串元素

相关链接:

 指针的使用——基本数据类型、数组、结构体-CSDN博客

http://www.dtcms.com/wzjs/294263.html

相关文章:

  • 杨凌企业网站开发国外b站视频推广网站
  • 做公司网站一般多少钱淘宝营销推广方案
  • 西安网站快速优化优化网站标题是什么意思
  • 广铁建设集团门户网站长沙网络推广软件
  • 林芝网站建设网络营销员岗位的职责与要求
  • 玩具租赁网站开发与实现论文竞价托管外包公司
  • 孝感新闻门户网站浙江网站seo
  • 北京做企业网站的公司成都网站快速优化排名
  • 贵州建设厅网站备案人员查询怎么交换友情链接
  • 做食物网站应该考虑些什么意思磁力蜘蛛种子搜索
  • 长沙给中小企业做网站的公司电商网页
  • 网站建设要经历哪些步骤谷歌chrome手机版
  • wordpress主题 网站大全南京网站设计优化公司
  • 甘肃路桥建设集团有限公司官方网站网站代发外链
  • 电视盒子做网站服务器长尾关键词查询
  • 专业建设网站制作河南百度推广公司
  • 四川南充房产信息网海淀区seo搜索引擎
  • 网站开发可以做什么潍坊住房公积金管理中心
  • 东莞清溪镇做网站公司链接提交
  • 保定哪有做网站的seo关键词快速排名前三位
  • 好用的手机网站主页厦门百度推广排名优化
  • 商丘做网站的公司贺州seo
  • 问答类网站怎么做免费外链网盘
  • 网站建设怎么做本周新闻热点
  • 政府网站建设程序什么是网站外链
  • web前端做营销类企业网站电商运营主要工作内容
  • 沧州网站建设价格网址查询域名解析
  • 湖北手机版建站系统信息全网搜索
  • 经营性网站备案网武汉搜索排名提升
  • 平板电脑 做网站开发seo优化方案