指针的特点
1。指针本身也有地址,指针定义之后,自身地址不变
但里面存的地址可以变化
********************************************************/
/********************************************************
#include<stdio.h>
int main()
{
int a=10;
int *p;
p=&a;
printf("变化前p中存储的地址%p\n",p);
printf("变化前p自身的地址%p\n",&p);
int b=0;
p=&b;
printf("变化后p中存储的地址%p\n",p);
printf("变化后p自身的地址%p\n",&p);
return 0;
}
********************************************************/
/********************************************************
2.指针的特点2&p指针自身地址,而p表示指针存的地址,*p表示所存地址的
内存空间
3.*p等效于指针p所存地址对应的空间的变量名
4.指针不初始化不要使用
********************************************************/
/********************************************************
#include<stdio.h>
int main()
{
int a=1;
int *p=&a;
int *p1[3];
p1[1]=p;
printf("%d",*p1[1]);
printf("%p\n",p1[0]);
printf("%p\n",p1[1]);
printf("%p\n",p1[2]);
}
********************************************************/
//#include<stdio.h>
//int main()
//{
// int a1=0;
// int a2=1;
// int a3=1;
// int *p1;
// int *p2;
// int *p3;
// p1=&a1;
// p2=&a2;
// p3=&a3;
//
//
// int *pp[3];
// pp[0]=p1;
// pp[1]=p2;
// pp[2]=p3;
//
// int *p[3]={&a1,&a2,&a3};
// int *q[3]={p1,p2,p3};
//
// printf("%p\n",p[2]);
// printf("%p\n",q[2]);
//
//
//
//}
//
// #include
/*********************************************************
一、用指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出
*********************************************************/
//#include<stdio.h>
//int main()
//{
// printf("请输入三个整数并以逗号分隔\n");
// int num;
// int *p[3];
// int a,b,c;
//// for(int i=0;i<3;i++)
//// {
// scanf("%d",&num);
//
// p[0]=#
//// }
// printf("%d",*p[0]);
//// for(int i=0;i<3;i++)
//// {
//// printf("%d",*p[i]);
//// }
// return 0;
//
//
//}
//
//#include<stdio.h>
//int main()
//{
// printf("请输入三个整数并以逗号分隔\n");
// int num;
// int *p[3];
// int a,b,c;
// int *t[3];
// int a1,a2,a3;
// t[0]=&a;
// t[1]=&b;
// t[2]=&c;
// for(int i=0;i<3;i++)
// {
// scanf("%d,",&num);
// t[i]=#
// printf("%d\n",*t[i]);
// }
//
// return 0;
//
//
//}
//
//
/************************************************************
1. 编写一个使用指针的c函数,交换数组a和数组b中的对应元素
************************************************************/
//#include<stdio.h>
//void change(int *a,int *b)
//{
// printf("交换前ab的值分别为%d\t%d\n",*a,*b);
// int temp;
// temp=*a;
// *a=*b;
// *b=temp;
// printf("交换后ab的值分别为%d\t%d\n",*a,*b);
//
//}
//int main()
//{
// int *p1;
// int *p2;
// int a=10;
// int b=20;
// p1=&a;
// p2=&b;
// change(p1,p2);
// return 0;
//
//}
//
//#include<stdio.h>
//
//int bijiao(int *num1,int *num2,int *num3)
//{
// int max=*num1>*num2?*num1:*num2;
// max=max>*num3?max:*num3;
// printf("%d",max);
// return 0;
//}
//
//int main()
//{
// int a1=1;
// int a2=2;
// int a3=3;
// int *p1;
// int *p2;
// int *p3;
// p1=&a1;
// p2=&a2;
// p3=&a3;
//
// bijiao(p1,p2,p3);
//}
//#include "stdio.h"
//
//void Transpose(int (*matrix)[3])
//{
// int temp;
// int i, j;
//
// for(i=1;i<3;i++)/*转置*/
// {
// for(j=0;j<i;j++)
// {
// temp = *(*(matrix+j)+i);
// *(*(matrix+j)+i) = *(*(matrix+i)+j);
// *(*(matrix+i)+j) = temp;
// }
// }
//}
//
//int main()
//{
// int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
// Transpose(a);
// for(int i = 0;i<3;i++)
// {
// for(int j=0;j<3;j++)
// {
// printf("%d ",a[i][j]);
// }
// printf("\n");
// }
//}
/*********************************************************
2.若有语句
int *point,
a=4;和point=&a;下面均代表地址的一组选项是_____.
a)a,point,*&a b)&*a,&a,*point
c)*&point,*point,&a d)&a,&*point ,point
二、C语言 用指针方法 输入3个字符串 按由小到大顺序输出
*********************************************************/
/*********************************************************
二、C语言 用指针方法 输入3个字符串 按由小到大顺序输出
*********************************************************/
#include<stdio.h>
int main()
{
char arr[]={'a','b','c'};
char (*p)[3];
p=&arr;
printf("%s",*p);
}
|
|