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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值