论指针的类型用处

论指针的类型用处
昨天看到有个代码,给了我对malloc开辟空间,和指针自增的进一步了解
(源码)#include<stdio.h>    //printf()    //(1)头文件信息
#include<stdlib.h>   //malloc()    //(2)
int main(void)   //(3)
{
int count;
int* array; 
if((array=(int *)malloc(10*sizeof(int)))==NULL)  //(4)分配空间
{
printf("malloc memory unsuccessful");
exit(1);
}
for (count=0;count<10;count++)      //(5) 赋值
{
*array=count;
array++;
}
for(count=9;count>=0;count--)                  //(6)赋值
{
array--;
printf("%4d",*array);
}
printf("\n");
free(array);        //(7)释放空间
array=NULL;       //(8)将指针置为空,避免不安全访问
exit (0);
}


没错这源码就是我上次转载别人博客里的那个代码,但是我从代码的这段array=(int *)malloc(10*sizeof(int)中 突然认识到指针类型用处,原来一直想有个例子证明我的想法,可是一直没有找到,那么下面我就为大家展示我想的代码,希望能为你有点帮助


演示代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,*q=NULL;
short *array,*p;

array=(short *)malloc(10*sizeof(short));
p=array;
for(i=0;i<10;++i)
{
*p=1;
p++;
}
q=array;
for(i=0;i<5;++i)
{
printf("%d ",*q++);

}
return 0;
}
大家可以看到我把array的类型设置为short类型的,把q指针的类型设置为int类型,然后把赋值都为1,用(int *)q去指向这片内存,运行一下


[root@localhost ~]# gcc 2.c -o 0
2.c: In function ‘main’:
2.c:15: 警告:从不兼容的指针类型赋值
[root@localhost ~]# ./0
65537 65537 65537 65537 65537 
[root@localhost ~]# 


可以看到会有警告出现,指针类型不兼容,
可以看结果都为65537,和我们想的一样,存储是每两个字节为1,但是读取时读取四个字节,换成二进制位
00000000 00000001 00000000 00000001
这样指针读取的和我们想的就一样了。


大家可以尝试下,如果有好的建议,或意见请发邮件,谢谢大神门的指导。xy_ny_yjs@163.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值