指针数组,指向字符的指针数组含义

话不多说先来代码:

#include<iostream>
using namespace std;
#define MAX 5//符号常量 无;
int main() {
   // char* name[] = { "jack","rose","c++" }; // 不兼容会报错!
    char* name[] = { (char*)"jack",(char*)"rose",(char*)"c++" };//解决办法:强制转换;
    // name[]分别存放着这3个字符串的首地址,这就相当与定义char *name1 = “jack”,
    //char *name2 = “rose”,char *name3 = “c++”,这是3个指针,每个指针存放一个字符串首地址,然后用name[3]这个数组分别存放  
    //这三个指针,就形成了指针数组。
    cout << *(name[1]+1)<<endl;
    cout << *name[0]<< endl;
    cout << name[1] << endl;
    cout << *name << endl;
   
    //----------------------------------------------------------------
    char* p2 = (char*)"demaxiya";//解决的一种方法;
    cout << p2<<endl;
    cout << *(p2+3)<<endl;
    //----------------------------------------------------------------
    cout << "指针数组2;" << endl;
    int  var[MAX] = { 10, 100, 200 };
    int* ptr[MAX];

    for (int i = 0; i < MAX; i++)
    {
        ptr[i] = &var[i]; // 赋值为整数的地址
    }
    for (int i = 0; i < MAX; i++)
    {
        cout << "Value of var[" << i << "] = ";
        cout << *ptr[i] << endl;
    }
    return 0;


}

 结果:

o
j
rose
jack
demaxiya
a
指针数组2;
Value of var[0] = 10
Value of var[1] = 100
Value of var[2] = 200
Value of var[3] = 0
Value of var[4] = 0

注意:  1.char* name[] = { "jack","rose","c++" }; // 不兼容会报错!
 解决办法:强制转换; char* name[] = { (char*)"jack",(char*)"rose",(char*)"c++" };

2.char* name[] = { (char*)"jack",(char*)"rose",(char*)"c++" };的含义:

name[]分别存放着这3个字符串的首地址,这就相当与定义char *name1 = “jack”,char *name2 = “rose”,char *name3 = “c++”,这是3个指针,每个指针存放一个字符串首地址,然后用name[3]这个数组分别存放这三个指针,就形成了指针数组。

3.char* p2 = (char*)"demaxiya";

 就是把字符串的第一个字符的首地址给了p2,在输出的系统先输出p2所指的第一个字符,然后自动加1,直到遇到“\0”;

*(p2+3)则是输出地四个字符;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值