为什么会有警告呢~

chump345 2007-11-24 01:40:05
#include"stdio.h"
#include"conio.h"
#define N 4
void fun(char *m[]);
void main()
{int i,j;
char m[][N]={{"2354"},{"3444"},{"4343"},{"5434"}};
fun(m[N]);
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
printf("%c ",m[i][j]);
printf("\n");}
getch();}
void fun(char *m[])
{int i,j;
for(j=0;j<N;j++)
{m[0][j]='0';
m[N-1][j]='0';
}
for(i=1;i<N-1;i++)
{m[i][1]='0';
m[i][N-2]='0';
}
}

后面有个警告~fun(m[N])~指针转换后指向其它类型在main函数中
...全文
90 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
laurence-star 2007-11-24
  • 打赏
  • 举报
回复
#include"stdio.h"
#include"conio.h"

#define N 4 //表示所包含字符串的个数
void fun(char*,int);
void main()
{
int i;
char *m[N]={{"2354"},{"3444"},{"4343"},{"5434"}};

for(i=0;i<N;i++)
{
printf("%s ",m[i]);
printf("\n");
}
printf("\n*****************\n");
for(i=0;i<N;i++)
{
fun(m[i],i);
printf("%s ",m[i]);
printf("\n");
}
getch();
}

void fun(char* s,int i)
{
if(0 == i || N-1 == i)
{
while(*s && (*s++ = '0'));
/*while(*s != '\0')
{
*s = '0';
s++;
} */

}
else
{
*s++ = '0';
while(*s++);
*(s-2) = '0';
}
}
*************
运行结果:
2354
3444
4343
5434

*****************
0000
0440
0340
0000
_石头_ 2007-11-24
  • 打赏
  • 举报
回复
元素全部变成0
------------------------------
试试下面的代码:

#include<stdio.h>
#include<windows.h>

void fun(char *m, int m_len)
{
while(m_len--)
*m++='\0';

}

int main()
{
unsigned int len,i,j;
char m[4][5]={{"2354"},{"3444"},{"4343"},{"5434"}};
len=sizeof(m);
fun(&m[0][0],len);
for(i=0;i<4;i++)
for(j=0;j<5;j++)
printf("%#x, ",m[i][j]); /* '0'以%c形式输出,屏幕上看不到内容*/
system("pause");
return 0;
}
jiarusun000 2007-11-24
  • 打赏
  • 举报
回复
fun(m[N]); 相当于
fun("5434");
所以这里fun的形式参数实际上应该是count pointer,但是fun()的原型声明中形式参数是char *m[] 这样的话,编译器要负责类型转换.
chump345 2007-11-24
  • 打赏
  • 举报
回复
我需要实现的效果是将周边的元素全部变成0,该怎么改呢~
_石头_ 2007-11-24
  • 打赏
  • 举报
回复
首先一个很明显的错误
char m[][N]={{"2354"},{"3444"},{"4343"},{"5434"}};
你的N为4,而字符串"2354"需要5个char空间:'2','3','4','5','\0' 一共5个!
内容概要:本文介绍了软件定义汽车(SDV)的最佳实践案例,重点围绕基于Vector技术的电子电气(E/E)架构设计与实现。文档展示了高算力计算平台(HPC)、区域控制器(Zone ECU)和车载网络(如CAN、Ethernet)的系统架构布局,并结合AUTOSAR操作系统(Classic/Adaptive)、虚拟化(Hypervisor)和SOA服务设计,构建现代化车载系统。通过vCANdrive平台演示了从开发、测试(SIL/HIL)、到OTA升级的全流程,涵盖传感器、执行器、应用层软件及云端协同的集成方案。同时展示了硬件原型(如树莓派、Triboard)和MICROSAR系列工具链在实际项目中的应用。; 适合人群:从事汽车电子系统开发、车载软件架构设计以及智能网联汽车研发的工程师和技术管理人员,具备一定的嵌入式系统或AUTOSAR基础者更佳。; 使用场景及目标:①理解软件定义汽车的整体架构设计方法;②掌握基于Vector工具链的HPC与区域控制器集成方案;③实现OTA更新、SIL/HIL测试、ETH-CAN通信转换等关键技术验证;④支持智能驾驶(ADAS)与智能座舱(IVI)系统的快速原型开发。; 阅读建议:建议结合Vector相关工具(如PREEvision、CANoe4SW、MICROSAR)进行实践操作,重点关注系统分层设计、通信机制与软件更新流程,同时可参考文档中的硬件连接示意图与信号映射关系进行仿真与实车验证。

70,026

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧