学了俩节课感觉就
* 解引用 &取地址这俩样东西
还是得看实 ***
指针写swap函数#includevoid swap1(int *a,int *b) { int t; t=*a; *a=*b; *b=t; } int main() { int x,y; scanf("%d %d",&x,&y); int *a; int *b; a=&x;b=&y; swap1(a,b); printf("%d %dn",x,y); return 0; }
下面这样写是换不过来了的(敲了几十天代码了,昨天刚知道,暖暖的学习还是要方法效率);
因为c语言中实参变量和形参变量之间的数据传递是单向的“值传递”,形参值的改变不能使实参值改变。形参只不过是实参在栈列中的一个临时拷贝,形参的改变并不会改变实参的实际变量。形参一旦在函数体内完成自己的”任务“,就会自动销毁,释放空间。所以改变的仅仅是拷贝的形参,并不会影响到实参。
#includevoid swap2(int a,int b) { int t; t=a; a=b; b=t; } int main() { int x,y; scanf("%d %d",&x,&y); swap2(x,y); printf("%d %dn",x,y); return 0; }
指针 链表
#include#include struct node { int data ; struct node *next; }; int main() { struct node *head,*p,*q,*t; int n,a; scanf("%d",&n); head=NULL; for(int i=1;i<=n;i++) { scanf("%d",&a); p=(struct node*)malloc(sizeof(struct node)); p->data =a; p->next =NULL; if(head==NULL) head=p; else q->next=p; q=p; } scanf("%d",&a); t=head; while(t!=NULL) { if(t->next->data>a) { p=(struct node *)malloc(sizeof(struct node)); p->data=a; p->next=t->next ; t->next=p; break; } t=t->next; } t=head; while(t!=NULL) { printf("%d ",t->data); t=t->next; } return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)