C/C++字符串,指针

区别处理c语言中char ,char* ,char** ,char *[],

char =‘h'字符

char* a=“Hello world"

char** b=&a;//**b=H,指针的指针

char* arr[10]={"123","hello"};//数组里存放指针

1.结尾字符串的值为0x00//0

2.空格字符串的值为’ ‘//空格字符

#include <iostream>
#include <string>
using namespace std;

int main(int argc,char** argv)
{
    //处理字符串 char*, char [], string
    int i=0;
    char* str="hello 0123456789 ";
    string sstr="hello";
    cout << sstr <<endl;
    while( (*str) != 0)//判断字符结尾(0x00)
       {
        if(*str != ' ')//跳过空格
            ++i;
        cout << *(str++);
       }
      cout<<'\n'<<i<<endl;//除空格字符外str字符串长度为15

    //处理字符串数组 char** a  指向指针的指针b->a->char
    //表示a是一个指针, 这个指针指向的地址存储的是 char * 类型的数据.

    char* a="Char**3.1415926";//* a->char
    char* * b=&a;//* b-> char*
    cout <<**b<<endl;//C


    //char* b[]数组里面放的是指针b[char* p]
    //表示 b是数组, 数组中的元素是指针char*, 指向char类型
    char *arr[10] = {"aBc","dEf"};//arr[0]可放10个char型指针,arr[1]可放10个char型指针....
    cout << *(*arr+1)<<endl;//arr->arr[0] B
    cout << *( *(arr+1)+1)<<endl;//arr+1->arr[1]  E
    return 0;
}

下面总结一下 : 
首先说明一下C程序在运行时, 不同的内容或变量分别存储在什么地方?
分了几块区域分别是, code, constants, global, heap, stack; (内存地址从低到高)
其中constants存储常量(常量值不允许修改), global存储在所有函数以外定义的全局变量(全局变量允许修改), heap是一块动态内存区域(可存放持久化内容, 不会自动释放内存), stack存放函数内的本地变量(函数执行完后本地变量占用的内存将自动释放);


char * a="hello";

注意结尾字符串的值为0x00

;指针存储位置,数据存储位置


//处理字符串数组 char** a  指向指针的指针b->a->char
//表示a是一个指针, 这个指针指向的地址存储的是 char * 类型的数据.

    char* a="Char**3.1415926";//* a->char
    char* * b=&a;//* b-> char*

示意图



//char* b[]数组里面放的是指针b[char* p]
    //表示 b是数组, 数组中的元素是指针char*, 指向char类型
    char *arr[10] = {"aBc","dEf"};//arr[0]可放10个char型指针,arr[1]可放10个char型指针....
    cout << *(*arr+1)<<endl;//arr->arr[0] B
    cout << *( *(arr+1)+1)<<endl;//arr+1->arr[1]  E



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值