C8-指針

一、指針變量的定義和使用
二、取址運算符
三、取值運算符
四、指針的算術運算

代碼:

//long arrLen (char *src)
//{
// long sum = 0;
// //while (*p != ‘\0’) {
// // p++;
// // sum++;
// //}
// sum = strlen(src);
// return sum;
//}

//void exchange (int *a, int *b)
//{
// int p = 0;
// p = *a;
// *a = *b;
// *b = p;
// printf(“%d %d\n”, *a, *b);
//}

//void testArr(int *p)
//{
// printf(“%d\n”, p[1]);
//}

int main(int argc, const char * argv[]) {

// int a = 3;
// //scanf(“%d”, &a);
// printf(“%d\n”, a);
// printf(“%d\n”, &a);

// 定義一個指針變量
// 初值NULL代表空的意思

// int *p = NULL;
// float *q = NULL;
// char *s = NULL;
// long *t = NULL;
//
// int a = 3;
// float c = 3.14159;
// char b = ‘+’;
// long d = 5;
// // 指針指向一個變量的內存空間
// // 將變量的地址賦值給指針
// // 指針中存的是地址,普通變量存的是數據值
// p = &a;
// s = &b;
// q = &c;
// t = &d;
// // %p對應地址
// printf(“&a = %p\n”, &a);
// printf(“p = %p\n”, p);
// // 通過指針訪問所指向空間值,指針前面加*
// printf(“%d\n”, *p);
// printf(“%c\n”, *s);
// printf(“%.2f\n”, *q);
// printf(“%ld\n”, *t);

// char c = ‘f’;
// // 注意:char * 代表指針類型;p代表指針名
// // 注意:p前加 * 對應值;p前不加 * 對應地址;定義指針時char * 是一起的,相當於p前未加 *
// char *p = &c;
// *p = c;
// // p = &c;
// printf(“%c\n”, *p);

// 用指針打印兩個數的和

// int a = 5, b = 8;
// int *p = NULL;
// int *q = NULL;
// int sum = 0;
// p = &a;
// q = &b;
// sum = *p + *q;
// printf(“%d “, sum);

// 指針長度全爲8字節(裝得下輸入的數據,因爲輸入數據長度未知)

// char *pC = NULL;
// int *pI = NULL;
// double *pD = NULL;
//
// printf(“%ld\n”, sizeof(pC));
// printf(“%ld\n”, sizeof(pI));
// printf(“%ld\n”, sizeof(pD));

// 指針類型要與之前定義的變量類型相對應

// char c = 1;
// char d = 3;
// char *p = &c;
// //int *p = &c;
// printf(“0x%x\n”, *p);

// int array[3] = {1, 2, 3};
// int *p = NULL;
// // 數組名代表數組的首地址
// // p = array;
// p = &array[0];
// // 打印的爲數組第一個元素的值
// printf(“%d\n”, *p);
// // 向後一個元素移動一個單位
// p++;
// // 打印的爲第二個元素的值
// printf(“%d\n”, *p);

// int array[5] = {1, 5, 4, 2, 3};
// int *p = NULL;
// p = &array[0];
// for (int i = 0; i < 5; i++) {
// printf(“%d “, *p++);
// printf(“%d “, *(p + i));
// printf(“%d “, p[i]);
// printf(“%d “, *(array + i));
// }

// 指針的冒泡排序

// int array[5] = {0};
// int *p = NULL;
// p = array;
// // 注意:數組名不可以移動
// // array++;
// for (int i = 0; i < 5; i++) {
// array[i] = arc4random() % (20 - 10 + 1) + 10;
// printf(“%d “, p[i]);
// }
// printf(“\n”);
// for (int i = 0; i < 4; i++) {
// for (int j = 0; j < 4 - i; j++) {
// if (array[j] > array[j + 1]) {
// int temp = array[j];
// array[j] = array[j + 1];
// array[j + 1] = temp;
// }
// }
// }
// for (int i = 0; i < 5; i++) {
// printf(“%d “, p[i]);
// }
// printf(“\n”);

// 指針與字符串

// char str[5] = “abcd”;
// char *p = NULL;
// p = str;
// printf(“%s\n”, p);
// printf(“%c\n”, *p);
// printf(“%c\n”, p[0]);
// printf(“%c\n”, *(p + 1));
// printf(“%c\n”, p[1]);

// 不同類型與結果的關係

// short a[4] = {3, 7, 9, 1};
// int *p1 = a;
// char *p2 = a;
// printf(“%d\n”, *p1);// *p1 = 458755 = 00703
// printf(“%d\n”, *p2);

// 用指針替換字符串中的個別字符,並截取輸出

// char string[] = “iPhone”;
// char *p = string;
// *(p + 1) = ‘v’;
// printf(“%s\n”, p + 1);

// 用指針求字符串長度

// char string[] = “iPhone123456”;
// //long sum = arrLen(string);//用函數實現
// //printf(“%ld “, sum);
// char *p = string;
// long sum = 0;
// // 判斷字符是否是 ‘\0’
// //while (*p != ‘\0’) {
// // p++;
// // sum++;
// //}
// sum = strlen(p);
// printf(“%ld\n”, sum);

// 用一個函數交換兩個int型變量的值

// int a = 0, b = 0;
// printf(“請輸入兩個整數:\n”);
// scanf(“%d%d”, &a, &b);
// exchange(&a, &b);

// 用一個函數交換數組元素

// int a[3] = {1, 2, 3};
// testArr(a);

// int a = 3;
// int *p[3] = {NULL};
// p[0] = &a;
// printf(“%d\n”, *p[0]);

return 0;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章