话不多说先来代码:
#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)则是输出地四个字符;