Coursera 學習記錄:指標練習題(關於指標與陣列,以及對& *的理解)
阿新 • • 發佈:2019-01-22
寫在最開始:
‘&’ 相當於“取地址”,等級高一級
‘* 相當於“取地址對應的值”,往下降一級
關鍵知識點:
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;
}