Coursera 学习记录:指针练习题(关于指针与数组,以及对& *的理解)

版权声明:知识内容为原创思考,转载请注明:转自 https://blog.csdn.net/SmartLoveyu/article/details/83239511

写在最开始:

‘&’ 相当于“取地址”,等级高一级
‘* 相当于“取地址对应的值”,往下降一级

关键知识点:

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;
}

猜你喜欢

转载自blog.csdn.net/SmartLoveyu/article/details/83239511