开发者社区> 王小闹儿> 正文

玩一玩字符串指针

简介: gcc版本  8.2.0   Linux  centos 7   输出字符串数组中的每个值 发现——字符串末尾的\0是真实存在的 1 #include 2 using namespace std; 3...
+关注继续查看

gcc版本  8.2.0   Linux  centos 7

 

输出字符串数组中的每个值

发现——字符串末尾的\0是真实存在的

  1 #include<iostream>
  2 using namespace std;
  3 
  4 int main(){
  5     char str[]="hello";
  7     for(auto i :str){
  8         cout<<i<<endl;
  9     }
 10     printf("%s \n",str);
 11     return 0;
 12 }

字符串最后的\0也被输出了。

 

 

修改字符串数组str索引位置为0的地址上的值

故意写的超过一个字符,最后报错——段错误

  1 #include<iostream>
  2 using namespace std;
  3 
  4 int main(){
  5     char str[]="hello";
  6     scanf("%s", str[0]);
  7     printf("%s \n",str);
  8     return 0;
  9 }

 

 

修改字符串str上的值

故意写的很长,有的版本会把str3里面的值也都改成aaaaaaa了,我这个版本报错——段错误(不同版本还是有差异的)

  1 #include<iostream>
  2 using namespace std;
  3 
  4 int main(){
  5     char str[]="hello";
  6     char str3[]="abcdeftg";
  7     cout<<"str3="<<str3<<endl;
  8     scanf("%s", str);
  9     printf("str=%s \n",str);
 10     cout<<"str3="<<endl;
 11     return 0;
 12 }

 

如果str3没有被赋初值

  1 #include<iostream>
  2 using namespace std;
  3 
  4 int main(){
  5     char str[]="hello";
  6     char str3[10];
  7     scanf("%s", str);
  8     printf("str=%s \n",str);
  9     cout<<"str3="<<endl;
 10     return 0;
 11 }

 

修改str的值

这次我只传入了一个a,然后打印连续地址上的值,发现hello中的“he”被覆盖了,后面的“llo”还活着

  1 #include<iostream>
  2 using namespace std;
  3 
  4 int main(){
  5     char str[]="hello";
  6     char str3[10];
  7     scanf("%s", str);
  8     printf("str=%s \n",str);
  9     cout<<"str3="<<endl;
 10     for(int i=0; i<15;i++){
 11         cout<<str[i]<<endl;
 12     }
 13     return 0;
 14 }

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
14208 0
指针字符串
用指针遍历字符串中字符, 上面的例子是用指针指向字符串中的首个字符,下面的例子是用指针直接指向字符串; (上面的例子的做法是先定义一个字符串数组,用于存放字符串,然后将数组首地址传给指针p,让指针p指向字符串数组的首个字符地址); C中string.
452 0
【C 语言】内存四区原理 ( 常量区示例 | 不同函数返回的相同字符串的指针地址相同 )
【C 语言】内存四区原理 ( 常量区示例 | 不同函数返回的相同字符串的指针地址相同 )
34 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
27734 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
12973 0
指针与字符串
一个字符串由一个或多个字符组成,因此我们可以使用字符数组来存放字符串,但是请注意,在数组的尾部需加上一个空字符”\0”; 使用指针来操作字符串,用指针遍历字符串数组的所有字符. char *p; char s[] = “ruiy”; p = s; or p = &s[0];//数组名代表数组中的首个 元素的地址.
360 0
地址/指针和字符串
原文:地址/指针和字符串 今天做作业时,发现下列一个问题。 首页是这个自编的strncpy函数: #include "ctype.h" #include "stdlib.h" #include "string.
607 0
2013-7-10学习笔记[字符串操作,指向函数的指针]
字符串处理函数1.strlen函数 这个函数可以用来测量字符串的字符个数,不包括\0 int size = strlen("mj"); // 长度为2     char s1[] = "lmj";  int size1 = strlen(s1); // 长...
700 0
将若干字符串按字母顺序(由小到大)输出(用指针)
将若干字符串按字母顺序(由小到大)输出(用指针)
51 0
+关注
王小闹儿
应届c++
129
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载