注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

随机过程

http://superware.blog.163.com

 
 
 

日志

 
 

指针类型转换  

2014-09-24 14:02:45|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

        将非常量指针赋值给常量指针系统进行自动转换。
        将常量指针赋值给非常量指针是非法的(但C给出警告,C++给出错误)。


#include <stdio.h>
#include <stdlib.h>

#define nx 20
#define ny 10

void mat_set (int, int, double *);
void mat_disp (int, int, const double *);


int main (int argc, char *argv[])
{
double *A;

A = (double *)malloc (nx*ny*sizeof(double));

printf ("set A...\n");
mat_set (nx, ny, A);

printf ("display A:\n");
mat_disp (nx, ny, A); // 这里 const double *p = A,自动将用非常量指针A初始化为常量指针p,自动转换。

free (A);

return 0;
}


void mat_set (int m, int n, double *mat)
{
int i, j;
double *p;

p = mat;

for (i = 0; i < m; i ++)
{
for (j = 0; j < n; j ++)
{
*p = i*0.1 + j*0.2;
p ++;
}
}
}


void mat_disp (int m, int n, const double *mat)
{
int i, j;
const double *p = mat; // double *p = mat 常量指针到非常量指针的自动转换,这是非法的。

for (i = 0; i < m; i ++)
{
for (j = 0; j < n; j ++)
{
if (j % ny == 0)
printf ("\n");
else
printf ("%8.2f", *p);

p ++;
}
}
printf ("\n");
}

  评论这张
 
阅读(58)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017