C语言字符数组复制函数 基本功能是实现了 但是总报警告:在不兼容的指针类型转换 强迫症害死人 求解答

#include <stdio.h>

void exchange(char **a, char **b)
{
char *p;

p = *a;
*a = *b;
*b = p;
}

int main()
{
char a[10] = "abc";
char b[10] = "def";

exchange(&a, &b);

printf("a[10] = %s b[10] = %s\n", a, b);
}

//&a是一个char [10]类型的指针,所以不能赋给与char*类型指针
//一般应该报错的。。因为没有隐式转化的机制。
//所以要解决的话,只能强制类型转换。
#include <stdio.h>

void exchange(char **a, char **b)
{
char *p;

p = *a;
*a = *b;
*b = p;
}

int main()
{
char a[10] = "abc";
char b[10] = "def";
exchange((char**)&a,(char**) &b);

printf("a[10] = %s    b[10] = %s\n", a, b);
return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-25
能编译通过真是奇迹……
不过或许是在下被标准C的规则束缚了,虽然在标准C中这种是决不允许的,但或许在其他地方,这是合理的写法,例如对于B语言程序员而言,或许这种思路就是再正常不过的追问

错误倒没有 有警告

C语言中,为什么会报这样的错?
1、一般是你在调用函数的时候传递的是int类型的数据,但那个函数定义的参数类型不是int(比如是结构或者指针或者数组)。2、下面为C语言的错误大全及中文解释:1: Ambiguous operators need parentheses — 不明确的运算需要用括号括起2: Ambiguous symbol xxx — 不明确的符号3: Argument list syntax error — 参数表...

C语言编程出现这个错误了cannot convert from 'int ** ' to 'int *...
代码在编译时会出现 error C2664: 'InsertSort' : cannot convert parameter 1 from 'int' to 'int []'这是因为用数组名做函数实参时,向形参(数组名或指针变量)传递的是数组首元素地址,因此对参数的类型做一下改变,如下图所示:

国家计算机等级考试考过国家网络技术三级的并且过了的朋友请进来看看我...
函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件pS6.DAT中。 替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算...

C语言中如何编写一个字符串复制函数,并在主函数中调用它。
可以利用字符指针结合while循环的方式来编写字符串复制函数。具体实现方法可以参考如下程序:include<stdio.h>void str_copy(char *str1, char *str2) \/\/ 字符串复制函数{ while(*str1++ = *str2++); \/\/ 将字符串str2中的每个字符逐个复制到str1中,直到遇到字符串结束字符'\\0'}void ma...

求助一个C语言问题 为什么在VC中老是提示我 warning C4101: 'c...
警告的意思为:警告C4101:'e':未引用的局部变量 原因是局部变量的错误使用。你的 f,c,k都是在main()函数里面定义的,然而,你在使用这些变量时是在temp()函数里面,在某个函数里面定义的变量只能在此函数中使用,所以你会产生错误。解决办法为,将这些变量定义为全局变量。问题成功解决。

不允许指针指向不完整的类类型是什么意思?
然而,在fun1函数中设置a[0]的值却不存在问题,因为这里使用了数组a,实际上它被转换成了指向首元素的指针。这个转换不需要知道数组的大小。C语言不会检查数组是否越界,它倾向于相信程序员,以提高程序执行效率,这也是C语言执行效率高、运行速度快的原因之一。有兴趣了解更多信息,可以参考:为什么C语言...

c语言中如何解决不可移动的指针(地址常数)转换在。。。中
不知道你的什么意思的 "但最后在此函数返回的却是在这个函数定义的一个一维数组的指针"传指针肯定是要修改指针里面的内容 跟本不需要返回

编译时出现subscripted value is neither array nor pointer怎么办_百度...
解决办法是:把crosstool-ng-1.18.0_build\/.build\/src gcc-4.6.0\/gcc\/gengtype.c 中的函数write_field_root中的 struct pair newv;移到最开始声明处,即改为这样:static void write_field_root (outf_p f, pair_pv, type_p type, const char *name,int has_length, struct fileloc *...

c语言标准函数库<string.h>
C语言标准函数库包含了多个用于字符串处理的基本函数。NULL常量用于表示空指针。size_t类型用于存储sizeof操作的结果。strcpy(char* s, const char* ct)函数将字符串ct复制到指针s所指向的内存中,包括终止符NUL,并返回s。strncpy(char* s, const char* ct, size_t n)函数最多复制n个字符从ct到...

一个c语言字符指针问题!
2、复制不行,类型不匹配,很多书上在这个问题上写的都不对。数组类型不是指针类型,差别很多。举个例子:这个会报错 char *ch="abcdefg";(ch+1)='a';这个呢 char ch[10]="abcdefg";(ch+1)='a';先说说一维数组的类型:char ch[10];ch的指针的类型是 char (*p)[10];p=&ch;所以能够...

相似回答