C++字符、字符串、字符数组、字符串指针、指针数组

作者:qxl 邮箱: 1183129553@qq.com


系列文章链接

一、C++ 字符、字符串、字符数组、字符串指针、指针数组



前言

为了深入理解C++,并时常回顾学过的知识点,对C++知识点进行记录总结。

参考1

一、字符指针、字符数组

字符指针

  字符指针的存储方式:字符指针变量本身是一个变量,用于存放字符/字符串的首地址。字符串本身是存放在以该首地址为首的一块连续的内存空间中,并以’\0’结束。字符和字符串的存储方式本质上并没有区别。

char *ps = "C language"

存储顺序:1. 分配内存给字符指针 2. 分配内存给字符串 3. 将字符串首地址赋值给字符指针
在c语言中通过%c和%s来控制是输出单个字符还是字符串。

字符数组

char str[] = "I am happy";//系统自动加入'\0'

字符数组域字符指针的存储方式似乎并没有实质上的差别。

二、字符串指针

string str[] = {"hello", "world"}

三、(字符串)指针数组

#include <stdio.h>
void main()
{
    char *str[] = {"Hello", "C++", "World"}; //char (*str)[] = ...
    int i;
    for(i=0; i<3; i++)
        printf("%s\n", str[i]);
} 
// str[0]字符串"hello"的首地址,str[0]+1:字符串"hello"第二个字符'e'的地址,str[2]=str+2:第三个字符串"world"的首地址
// str[1]字符串"C++"的首地址
// str[2]字符串"world"的首地址

四、常用方法

char *argv:理解为字符串
char **argv:理解为字符串指针
char *argv[]:字符串指针数组

常用方法:
int main(int argc, char*argv[])第一个参数表示传入的需处理的元素个数,第二个表示传递字符串数组地址。
char* a和char a[]

  • 相同点:a 都是指针,只想char类型
  • 不通点:char a[] 把内容存在stack。char *a则把指针存在stack,把内容存在constants。

char * a[10] 和 char a[10][20]

  • 相同点 : a 都是2级指针, *a 表示一级指针, **a 表示内存中存储的内容。
  • 不同点 : char * a[10], 数组由char * 类型的指针组成; char a [10][20] 表示一位放10个元素, 二维放20个元素, 值存放地是一块连续的内存区域, 没有指针。

参考

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值