指针
草莓味的c
你喜欢吃橙子吗?
展开
-
什么时候用指针?
当你传递一个参数给函数的时候,这个参数会不会在函数内被改动,决定了使用什么参数形式。如果需要被改动,则需要传递指向这个参数的指针。如果不用被改动,可以直接传递这个参数。——摘抄自程杰前辈的《大话数据结构》【很棒的一段话,受益匪浅。】...原创 2021-07-27 10:22:08 · 231 阅读 · 3 评论 -
指针实现二维数组行列互换
//二维数组转置#include<stdio.h>int main(){ void exchange(int *p); int a[3][3],i,j; int *p; //二维数组的输入 printf("请输入二维数组:"); for(i=0;i<3;i++){ for(j=0;j<3;j++){ scanf("%d",&a[i][j]); } } p=&a[0][0];//指向第一行 //行列互换 exchange(p);原创 2021-02-20 11:03:37 · 3133 阅读 · 8 评论 -
指针与函数
【指向函数的指针】定义: 数据类型 (*指针变量名)(函数参数表列);如果要用指针调用函数的话,必须先使指针变量指向该函数eg:int *p(int a1 ,int a2);p=max;c=(*p)(a,b);【函数的返回值是指针型,即地址】返回指针值的函数定义形式:类型名 *函数名(参数表列);eg:int *a(int x,int y){}a是函数名,这个函数名前有个“*”,表示此函数是指针型函数(函数返回值是指针)。最前边的int表示返回的指针是指向整型变量的原创 2021-02-20 09:44:08 · 67 阅读 · 0 评论 -
指针与数组之间的难舍难分
数组名数组名不代表整个数组中的全部数据,只能表示为数组中首元素的地址,就是一个指针常量。因为数组属于顺序表,逻辑上相邻的元素物理上也相邻。(实参数组名表示该数组首元素的地址,而形参数组是用来接受实参传递过来的地址的)用指针引用数组元素如果指针 p 指向数组 a 的首元素,数组中序号为 i 的元素可以 *(p+i)这样表示,或者 *(a+i)也可如果指针 p 已经指向了数组中的一个元素,那么 p+1表示同一个数组的下一个元素,但是要理解的是,这里的 +1并不只是单纯的+1,而是一个.原创 2021-02-19 17:54:24 · 132 阅读 · 0 评论 -
指针实现选择排序
先看一下不用指针的写法(函数参数为数组名) void select_sort(int a[],int n){ int i,max,temp; for(i=0;i<n-1;i++){ max=i; for(j=i+1;j<n;j++){ if(a[max]<a[j]) max=j; } //交换 if(max!=i){//max值变了之后才交换 temp=a[i]; a[i]=a[max]; a[max]=temp;原创 2021-02-08 15:02:17 · 8960 阅读 · 2 评论 -
简单理解指针
直接把指针理解成地址,没有任何问题。指针变量的意思就是存放地址的变量。int *point_1,*point_2//表示定义了两个指针变量,他们指向的变量是int型的//此处的“ * ”只表示point_1这个变量是指针变量,point_1是指针变量名printf("%d",*point_1);//输出指针变量point_1所指向的整型变量的值//此处的“ * ”表示“指向的对象”,此处的“ *point_1 ”表示point_1所指向的变量赋值时:point_1=&a;//po原创 2021-01-31 17:36:43 · 97 阅读 · 0 评论 -
【图解】指针实现两个整数降序输出(企图改变指针形参的值来改变指针实参的值)
用指针变量作为函数参数的方式:主函数int main(){ void swap1(int *p1,int *p2); void swap2(int *p1,int *p2); int *point_1,*point_2,a,b; printf("请输入a、b:"); scanf("%d,%d",&a,&b); point_1=&a;point_2=&b; if(a<b){ swap2(point_1,point_2); } printf("a=原创 2021-01-31 17:01:39 · 1017 阅读 · 0 评论