指针

1 指针数组
#include <stdio.h>//指针数组
int main()
{
int a[2][3]={{2,1,3},{5,7,8}};//a—a[0] a[1]
int *p[2];

p[0]=a[0];//&a[0][0]-----p[0]---看作一级指针
p[1]=a[1];

printf("%d\n",a[0][1]);
printf("%d\n",*(a[0]+1));
printf("%d\n",*(p[0]+1));

return 0;

}
//用指针求二维数组中各个元素之和
#include <stdio.h>

int main()
{
int a[2][3]={{2,1,3},{5,7,8}};
int *p[2]={a[0],a[1]};
int i,j,sum=0;
printf(“total:%d\n”,sizeof§);

for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
sum+=*(p[i]+j);
}
printf(“sum=%d\n”,sum);

return 0;
}
多级指针和数组//
#include <stdio.h>

int main()
{
int a[]={1,2,3};
int *p[2]={&a[0],&a[1]};

int **q;
q=p;

printf("%d %d\n",a[0],a[1]);
printf("%d %d\n",*p[0],*p[1]);

printf("%d %d %d\n",a[0],*p[0],**q);

return 0;

}
//多级指针与字符数组
#include <stdio.h>

int main()
{
char *s[]={“ddds”,“fee”,“eee”};
int i,n;

i=0;
n=sizeof(s)/sizeof(char *);

while(i<n)
{
printf("%s\n",s[i]);
i++;
}

return 0;
}

//多级指针与字符数组
#include <stdio.h>

int main()
{
char *s[]={“ddds”,“fee”,“eee”};
int i,n;
char **p;
p=s;
i=0;
n=sizeof(s)/sizeof(char *);

while(i<n)
{
printf("%s\n",*(p+i));
i++;
}

return 0;
}
2 数组指针
二维数组名表示行地址;
行指针–数组指针
存储行地址的指针变量,叫数组指针;如: int (*p)[3]; int a[2][3];
用行指针操作二维数组时,表达式一般写成1行的元素个数,即列数;
a+1–移动一行;p+1----移动一行,3个整数;
#include <stdio.h>//指针数组
int main()
{
int a[2][3]={{2,1,3},{5,7,8}};//a—a[0] a[1]
int (p)[2];
p=a;
printf("%d\n",a[0][1]);
printf("%d\n",
(p[0]+1));

return 0;

}

3 void指针
void指针是一种不确定数据类型的指针变量,它可以通过强制类型转换让该变量指向任何数据类型的变量。
void * p; 对于void指针,在还没有强制类型转换之前,不能进行任何指针的算术运算。

#include <stdio.h>
int main()
{
int m=10;
double n=3.12;
void *p,*q;

p=(void *)&m;
q=(void )&n;
printf("%d\n",
(int )p);
printf("%.2lf\n",
(double *)q);

return 0;
}
4 const修饰指针
(1) const int* p;const 放在*前,不能通过指针改目标;const修饰谁,谁不能变;
例子:
int m;
const int p; //const修饰p,*p不能变,但p可以改变;
p=&m;
(*p)++;

(2) int const p; const放在后,存储的地址的值不能修改;
int m;
int const p=&m; const修饰p,p不能变,但p可以改变;


int m;
const int *p;
int *const q;
p=&m;
*q=20;
(3) const int *const t;//也不可修改;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值