1.对于字符串可以由字符数组来存储
例如: char a[]=“hello”
2.字符串用指针来表示
char *p=“hello”;
这只能代表字符串的首地址给了指针p3.
3.这样对于数组与指针,可实现对于字符串的字节的计算,以及对于字符串的字符交换,逆序输出
3.1字符串的字节计算
代码如下:
include<stdio.h>
int main()
{
char a[20]=“helloworld”;
printf("%s\n",a);
printf(“sizeof(a)=%d\n”,sizeof(a));
return 0;
}
3.2字符串的字节交换
可由下列代码实现:
#include<stdio.h>
int main()
{
char a[]=“hello”,temp;
int i=0,j;
while(a[i]!=’\0’)
{
i++;
}
j=i-1;
i=0;
while(i<j)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
i++;
j–;
}
printf("%s",a);
return 0;
}
3.3字符串的逆序输出
可由下面代码实现:

#include<stdio.h>
int main()
{
char a[]=“helloworld”;
char b[100];
int i,j;
i=0;
while(a[i]!=’\0’)
{
i++;
}
j=i-1;
for(i=0;a[i]!=’\0’;i++,j–)
{
b[j]=a[i];
}
printf("%s",b);
return 0;
}
4.访问字符串也是由数组与指针实现的
4.1数组实现访问
数组可以两种访问法:1.下标法 2.地址法
访问的伪代码如下:
char a[]=“hello”;
int i;
for(i=0;i<strlen(a)+1;i++)
{
printf("%c",a[i]);
}
输出函数可实现对于其中的字符串的特定字符的访问。
4.2指针实现访问字符串
指针访问也有两种方法:1.下标法 2.地址法
访问的伪代码如下:
char *p=“hello”;//把字符串首地址赋给了指针p;
int i;
for(i=0;i<strlen§+1;p++,i++)
{
printf("%c",*p);
}
5.当然了对于通过数组,指针对于字符串进行初始化后进行再赋值存在着不同。
例如:
char *a=“hello”;
char a[100]=“hello”;
int i=2;
5.1对于数组就可以进行: a[2]=‘q’
那是因为对于最初数组的初始化,a是个数组,是在栈区申请的一个空间,并且把这空间给了a,然后把只读区的"hello"进行了一次复制再给了a,这样a的指向就能修改。即是a[2]='q’是正确的。
5.2对于指针而言 a[2]='q’在编译中会出现错误。
那是因为对于指针最初的对字符串的初始化,hello的地址给了指针a,并且hello储存在只读区,相当于const类型的,内容是不能修改的,此时在进行赋值就是不对的,所以不能通过指针对字符串常量进行再赋值。

字符串与指针,数组的关系与用途相关推荐

  1. 二级指针与指针数组的关系

    http://blog.csdn.net/shuaishuai80/article/details/6129742 #include <stdio.h> void test(char *a ...

  2. 字符串和字符数组的关系

    1.字符串:以'\0'为结尾的字符数组. 2.栗子: #include "stdafx.h" #include <iostream>using namespace st ...

  3. 【C 语言】二级指针作为输入 ( 指针数组 | 指针数组排序 | 字符串排序 | strcmp 函数 )

    文章目录 一.strcmp 函数 二.指针数组排序 ( 字符串排序 ) 二.完整代码示例 一.strcmp 函数 strcmp 是 String Compare 缩写 , 该函数用于比较两个字符串 ; ...

  4. 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  5. 字符 字符串 字符数组 字符串指针 指针数组

    一.字符指针.字符数组 字符指针:字符串指针变量本身是一个变量,用于存放字符串的首地址.而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以'\0'作为串的结束. char *ps=" ...

  6. 关于指针数组与数组指针详解(知识点全面)

    1.目录 1.指针数组 2.数组指针 2.它们的区别 1.指针数组 如果一个数组中的所有元素保存的都是指针,那么我们就称它为指针数组.其一般形式为: 数据类型    *数组名[常量表达式][常量表达式 ...

  7. (C/C++学习)15.C语言字符串和字符数组

    说明:在C语言中字符串和字符数组有很多相似之处,却又有着一些不同.本文将针对其区别与联系,进行分析总结. 一.字符串 1.在C语言中,字符串是由双引号括起来的任意字符序列,如:"china& ...

  8. 【C 语言】二级指针作为输入 ( 指针数组 | 将 二级指针 作为函数输入 | 抽象函数业务逻辑 )

    文章目录 一.打印 指针数组 中指针指向的字符串 二.字符串排序 三.代码示例 一.打印 指针数组 中指针指向的字符串 打印 指针数组 中指针指向的字符串 : 指针退化问题 : 传入二级指针 , 同时 ...

  9. C/C++指针 数组

    Demo.cpp文件 #include <iostream> #include <stdio.h> #include <iomanip> #include < ...

最新文章

  1. 错误:“Cannot load JDBC driver class ‘com.mysql.jdbc.Driver”的解决方法
  2. python阶乘匿名函数_python的高阶函数与匿名函数
  3. ora-12514: tns: 监听程序当前无法识别连接描述符中请求的服务 问题解决
  4. bzoj1025题解
  5. OpenCV编写视频文件的实例(附完整代码)
  6. css垂直居中如何实现
  7. SPOJ1812 LCS2
  8. 通过脚本设置Windows系统ip地址
  9. 链表相连与拷贝时的内存变化
  10. 导入新项目报错 Hibernate提示:No generator named ID_GENERATOR is defined in the persistence unit
  11. commons fileupload的DiskFileItemFactory
  12. Android webView嵌套h5页面 软键盘遮盖页面问题 解决方案 java kotlin
  13. android自定义ClockView
  14. ASP.NET MVC3 系列教程 - URL友好化的重型武器[路由]
  15. 共享单车数据集_共享单车数据的数据可视化
  16. codeforces 1520E Arranging The Sheep
  17. Dreamweaver 安装 激活
  18. 基于数据驱动的交叉口精细化管理——以北京门头沟双峪路口为例
  19. 图解 Java 垃圾回收机制,看了都说好
  20. 抖音、今日头条、西瓜视频将打包上市

热门文章

  1. 后缀数组(SA)备忘
  2. 解决 Intellij IDEA 文件图标一直闪烁
  3. mac 抓包工具chares破解
  4. 去掉easyui datagrid内部虚线的方式。
  5. 浏览器是如何工作的?(转载)
  6. 深入解析Windows系统两大进程
  7. asp.net开发 网络硬盘[转贴+删节]
  8. Apache Commons Configuration使用入门
  9. 在钉钉上怎么手写_胖·评测|亲测!磐度A5数字纸笔手写板能适配多少直播平台?...
  10. 自定义图片验证码认证过滤器