写在最开始:
‘&’ 相当于“取地址”,等级高一级
‘* 相当于“取地址对应的值”,往下降一级
关键知识点:
1、数组名为常量,不可被赋值
2、char类型的数组名为首元素的指针,并且在输出时,自动输出从指针的位置输出char数组的值
char a[] = { "hello,world" };
//想要输出"world"
cout << a << endl; //输出hello,world
cout << a + 1 << endl; // ello,world
cout << a + 5 << endl; // ,world
cout << a + 8 - 2 << endl; // world
3、对于基类型相同的两个指针变量之间,以下哪一项操作缺乏有价值的语义(+ - < =)
‘<’ : 比较地址大小
‘-‘ : 计算同类型字符相隔数
‘=’ : 赋值
char a[] = { "hollo,world" };
//想要输出"hello,world"
*(a + 1) = 'e';//正确
//a++;//a = a+1
//*a = 'e';//错误,数组名为常量,不可被赋值
cout << a << endl;
char a[] = { "hello,world" };
//想要输出"world"
cout << a << endl; //输出hello,world
cout << a + 1 << endl; // ello,world
cout << a + 5 << endl; // ,world
char a[10] = { '1', '2', '3', '4', '5', '6', '7', '8', '9', 0 }, *p;
int i = 8;
p = a + i;
cout << p << endl;
// 9
cout << p - 3 << endl;
// 输出6789
// 和上一问题同理
//关于指针间的运算符
char a[] = { "hello,world" };
char b[] = { "this" };
char *p1, *p2;
p1 = a; //*p1 = a; 错误,原因,p1为指针变量,与a同级
p2 = b;
cout << p1 - p2 << endl;
//cout << p1 < p2 << endl;//错误
//cout << p1 + p2 << endl;
//把最大的值放入a[0]
int a[10] = { 6, 7, 2, 9, 1, 10, 5, 8, 4, 3 }, *p = a, i;
for (i = 0; i < 10; i++, p++)
if (a[i] > a[0]) {
*a = *p;
}
cout << *a << endl;
// *p = a[0]的值,p 是 a[0] 的地址;
// *(p+i) = a[i]
#include<iostream>
using namespace std;
int main() {
/*
char a[] = { "hollo,world" };
//想要输出"hello,world"
*(a + 1) = 'e';//正确
//a++;//a = a+1
//*a = 'e';//错误,数组名为常量,不可被赋值
cout << a << endl;
*/
/*
char a[] = { "hello,world" };
//想要输出"world"
cout << a << endl; //输出hello,world
cout << a + 1 << endl; // ello,world
cout << a + 5 << endl; // ,world
*/
/*
char a[10] = { '1', '2', '3', '4', '5', '6', '7', '8', '9', 0 }, *p;
int i = 8;
p = a + i;
cout << p << endl;
// 9
cout << p - 3 << endl;
// 输出6789
// 和上一问题同理
*/
/*
//关于指针间的运算符
char a[] = { "hello,world" };
char b[] = { "this" };
char *p1, *p2;
p1 = a; //*p1 = a; 错误,原因,p1为指针变量,与a同级
p2 = b;
cout << p1 - p2 << endl;
//cout << p1 < p2 << endl;//错误
//cout << p1 + p2 << endl;
*/
/*
//把最大的值放入a[0]
int a[10] = { 6, 7, 2, 9, 1, 10, 5, 8, 4, 3 }, *p = a, i;
for (i = 0; i < 10; i++, p++)
if (a[i] > a[0]) {
*a = *p;
}
cout << *a << endl;
// *p = a[0]的值,p 是 a[0] 的地址;
// *(p+i) = a[i]
*/
return 0;
}