指针

%p 十六进制输出指针地址
%x 普通十六进制
%d 十进制


int i=10,j=20;
int *p;
p=&i;//给指针赋值
*p+=10;//给i加10
printf(“x=%d\t”,*p);//输出i
p=&j;
*p+=30;
printf(“y=%d\n”,*p);


int a[10],*p;
int max;
for(p=a;p<a+10;p++)//利用指针循环访问数组
scanf("%d",p);//利用指针向数组输入数据
max=a[0];
for(p=a+1;p<a+10;p++)
if((*p)>max)
max=*p;
printf("%d\n",max);


int a[3][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int i,j;
for(j=0;j<3;j++)
for(i=0;i<4;i++)
printf("%d “,((a+j)+i));//访问二维数组的值
或者
int p[3]={a[0],a[1],a[2]};//指针数组定义二维数组
for(j=0;j<3;j++)
for(i=0;i<4;i++)
printf("%d ",
(p[j]+i));//访问二维数组的值
访问第三行
p=a+2;或者p=a[2];//指向第三行
for(j=0;p<a+3;p++)
for(i=0;i<4;i++)
printf(”%d ",(*p)[i]);//访问二维数组的值


srand(time(NULL)):
这是两个函数!一个是srand函数!这是在调用rand()这个函数之前使用的!rand()是一个产生随机数的函数!而srand是一个设置随机数种子的函数!通常这两个函数是一起使用的!来完成产生随机数的功能!而time(NULL)这个函数的返回值是作为srand函数的参数的!意思是以现在的系统时间作为随机数的种子来产生随机数!至于NULL这个参数。只有设置成NULL才能获得系统的时间!


用指针数组随机切换行顺序
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int a[3][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};//数组初始顺序
int order[3]={0,1,2};//班级初始顺序
int p[3];//指向新顺序的数组
int i,j;
int no,temp;
srand(time(NULL));//NULL大写
for(i=2;i>=0;i–)
{
no=rand()%(i+1);//产生0~i之间的随机数,前i排随机换
temp=order[no];
order[no]=order[i];
order[i]=order[no];
}
for(i=0;i<3;i++)
p[i]=a[order[i]];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("%d ",
(p[i]+j));
printf("\n");
}


#include<stdio.h>
int* test(int x[])
{
return x;
}
int main()
{
int y[11];
int i;
for(i=0;i<11;i++)
y[i]=i;
y[i]=0;
y[11]=test(y);
for(i=0;i<11;i++)
printf("%d",y[i]);
return 0;
}
或者
#include<stdio.h>
int* test()
{
static int y[11];//需要加上static,否则y为临时变量,无法返回继续使用
int i;
for(i=0;i<11;i++)
y[i]=i;
return y;
}
int main()
{
int p;
int i;
p=test();
for(i=0;i<11;i++)
printf("%d",
(p+i));
return 0;
}


#include<stdio.h>
int max(int x,int y)
{
return x>y?x:y;
}
int main()
{
int (*p)(int,int)=&max;
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("%d\n",p(p(a,b),c));
return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值