指针和数组
来源:互联网 发布:jy零食淘宝店网址 编辑:程序博客网 时间:2024/05/21 10:26
-
从0到1,回归基础,夯实基础
点滴积累,成就未来
*
#include <stdio.h>#include <stdlib.h>//定义:建立存储空间的声明称为定义;//声明:不需要建立存储空间的声明称为声明;//指针=地址;指针只能存放地址!!!例如:*p1=100 错误!可以 a=100; int *p1=&a;//指针变量=存放(指针)地址的变量:包含存储单元编号表示的地址和指向存储单元的数据类型;int main17(){ int a = 10, b = 20; int *p1, *p2; p1 = &a; p2 = &b; printf("a=%d,b=%d\n", a, b); printf("p1=%d,p2=%d\n", p1, p2);//地址 printf("*p1=%d,*p2=%d\n", *p1, *p2);//}//指针int main18(){ int *p, *p1, *p2, a, b; printf("input two integer number:\n"); scanf_s("%d%d", &a, &b); p1 = &a; p2 = &b; if (*p1 < *p2)//地址互换 { //p = p1; p1 = p2; p2 = p; p1 = &b; p2 = &a; } printf("a=%d.b=%d\n", a, b); printf("max=%d.min=%d\n", *p1, *p2);//输出//a,c实际值不变,地址互换}int main19(){ void swap(int *p1, int *p2); int a, b; int *pp1, *pp2; printf("input two integer number:\n"); scanf_s("%d%d", &a, &b); pp1 = &a; pp2 = &b; if (*pp1 < *pp2)//a,b的值改变 swap(pp1, pp2); printf("max=%d.min=%d\n", a, b);//输出}void swap(int *m1, int *m2)//将a,b的值改变{ int tmp; tmp = *m1; *m1 = *m2; *m2 = tmp;}void exchange(int *q1, int *q2, int *q3){ void swap(int *m1, int *m2); if (*q1 < *q2) swap(q1, q2); if (*q1 < *q3) swap(q1, q3); if (*q2 < *q3) swap(q2, q3);}int main20(){ int *p1, *p2, *p3; int a, b, c; scanf_s("%d%d%d", &a, &b, &c); p1 = &a; p2 = &b; p3 = &c; exchange(p1, p2, p3); printf("the order is:%d,%d,%d\n", *p1, *p2, *p3); printf("the order is:%d,%d,%d\n", a, b, c);}int main21(){ int a[10]; int *p; for (int i = 0; i < 10; i++) scanf_s("%d", a + i); //for (int i = 0; i <10; i++) // printf("%d ", *(a + i)); for (p=a; p < (a+10); p++) printf("%d\n", *p);} int main22(){ void inv(int *arr, int n); int a[10]; int *p=a; //输入 for (int i = 0; i < 10; i++, p++) scanf_s("%d", p); printf("\n"); //输出 for (p=a ; p<(a+10); p++)//p必须重新指向a[0],因为for循环已经是p指向a[9]; printf("%d ", *p); p = a; inv(p, 10); printf("\n"); for (p=a; p<(a + 10); p++)//同理 printf("%d ", *p);}/*void inv(int *arr, int n){ int i, j, temp, m = (n - 1) / 2; for (i = 0; i <= m; i++) { j = n - 1 - i; temp = *(arr + i); //*(arr+i) = arr[i]; *(arr + i) = *(arr + j); *(arr + j) = temp; }}*/void inv(int *arr, int n){ int *i, *j, temp, m = (n - 1) / 2; i = arr; j = arr + n - 1; for (; i <= (arr + m); i++, j--) { temp = *i; *i = *j; *j = temp; } return;}//快速排序void qSort(int *a, int n){ int i, j, k, t; for (i = 0; i < n - 1; i++) { k = i; for (j = i + 1; j < n; j++) { if (*(a + j) > *(a + k)) k = j; if (k != i) { t = *(a + i); *(a + i) = *(a + k); *(a + k) = t; } } }}int main23(){ void qSort(int *a, int n); int i, b[10]; int *p; p = b; for (i = 0; i < 10; i++) scanf_s("%d", p++); printf("\n");// for (p = b; p < (b + 10); p++)//一定要注意是p<(b+10);是b+10!!!如果不下心写成p+10。。会一直打印。。且打印错误// printf("%d ", *p); for (p = b, i = 0; i < 10; i++, p++) printf("%d ", *p); printf("\n"); p = b; qSort(p, 10);//如果直接调用qSort(b,10);结果会出错。。。。why??? for (p = b, i = 0; i < 10; i++) { printf("%d ", *p); p++; } printf("\n");}//二维数组int main24(){ int a[3][4] = { 1, 3, 5, 6, 7, 8, 9, 19, 2, 4, 12, 11 }; printf("%d,%d\n", a, *a);//0行首地址和0行0列首地址 printf("%d,%d\n", a[0], *(a+0));//0行9列首地址 printf("%d,%d\n", &a[0], &a[0][0]);//0行搜地址和0行0列首地址 printf("%d,%d\n", &a[1], a + 1);//1行0列首地址和1行首地址 printf("%d,%d\n", &a[1][0], *(a + 1)+0);//1行0列首地址 printf("%d,%d\n", a[2], *(a + 2));//2行0列首地址 printf("%d,%d\n", &a[2], a + 2);//2行首地址 printf("%d,%d\n", a[1][0],*(*(a+1)+0));//1行0列元素的值//~~~!!!###%%^^^~~ printf("%d,%d\n", a[2][0], *(*(a + 2)+0));//2行0列元素的值//~~~!!!###%%^^^~~}int main(){ int a[3][4] = { 1, 3, 5, 6, 7, 8, 9, 19, 2, 4, 12, 11 }; int *p; for (p = a[0]; p < a[0] + 12; p++)//a[0]+12;与前面问题相同 { if ((p - a[0]) % 4 == 0) printf("\n"); printf("%4d", *p); } system("pause"); return 0;}
阅读全文
0 0
- 指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- 指针数组和数组指针
- 数组指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- 数组指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- SQL Server的常用数据类型(字符型)的区别
- bzoj3675 [ APIO2014 ] -- 斜率优化DP
- 如何运行vue项目
- Redux笔记
- 例说数据结构&STL(十三)——pair
- 指针和数组
- Unity3D实现宠物跟随主角的效果图
- selenium的使用和scrapy的简单使用
- 移动硬盘有些分区系统无法识别
- Yahoo网站性能优化的34条军规
- POJ 2778 DNA Sequence (AC自动机 + 矩阵快速幂)
- ARM指令系统
- Spring MVC表单防重复提交
- 141. Linked List Cycle