c语言字符型数组传入函数?在主函数里面 , sizeof是数组占的空间
在作为参数时,会被转为指针
所以在函数里面打印的是sizeof(char*)
对于任意指针,sizeof的值都是当前编译器位数 。你的是32位编译器,输出就是4
【c语言函数字符数组参数 c语音字符数组】ps:4字节=32位
C语言中关于字符数组做形参的问题~菜鸟求救~void cnect(char strn1[8],char strn2[4],char strn3[13],int l1,int l2)
{
int i,k,t;
for(i=0;il1;i++)
strn3[i]=strn1[i];
for(k=0;kl2;k++)
{
t=i+k+1;
strn3[t]=strn2[k];
}
strn[12]='\0';//////////////////////////////////这里加上\0(空字符)字符,结尾字符串;
}
我用的VC++,没用过TC
问题2
char str1[]={"I love "},str2={"you"},str3[13];
改str2[]=“you”;
也要字符末尾没加空字符吧
C语言 char 字符数组 和 字符指针 作为 函数参数 的区别在C语言中,数组作为参数,进行传递时,传递的是指针 ,换句话说,字符数组作为参数,进行传递时,传递的是字符数组的起始地址,相当于一个字符指针,两者没有区别 。比如下面的代码:
#include stdio.h
void f1(char *s) { printf("%s\n", s);}
void f2(char sa[]) { printf("%s\n", sa);}
int main()
{
char rsa[] ="world hello";
f1(rsa);
f2(rsa);
return 0;
}
c语言 , 字符数组函数#include stdio.h
/*比较两个字符串*/
/*src、dst相等 return 1*/
/*src比dst短 return -2*/
/*src比dst长 return 2*/
/*src、dst长度一致但不相等 return -1*/
int stringCmp (char *src, char *dst) {
if (strlen (src)strlen (dst))
return -2;
else if (strlen (src)strlen (dst))
return 2;
else {
while (*src*dst) {
if (*src != *dst)
return -1;
src++;
dst++;
}
return 1;
}
}
/*合并两个字符串*/
void mergeString(char* str1, char* str2, char* merge) {
while (*merge++ = *str1++); /*复制str1并将指针移动到字符串c语言函数字符数组参数的末尾c语言函数字符数组参数的下一个位置*/
merge--; /*退到字符串的末尾*/
while (*merge++ = *str2++); /*从末尾(\0)的位置开始将str2拷贝进来*/
*merge = '\0';
}
int main(void) {
char *str1_1="hel",*str1_2="lo", *merge1;
char *str2_1="ness",*str2_2="happy", *merge2;
char *str3_1="hi",*str3_2="hi", *merge3;
char *str4_1="hello",*str4_2="world", *merge4;
puts ("第1组字符串c语言函数字符数组参数:");
puts (str1_1);
puts (str1_2);
if (stringCmp (str1_1, str1_2) == 1)
puts (str1_1);
else if (stringCmp (str1_1, str1_2) == -2) {
mergeString (str1_2, str1_1, merge1);
puts (merge1);
}
else if (stringCmp (str1_1, str1_2) == 2 || stringCmp (str1_1, str1_2) == -1) {
mergeString (str1_1, str1_2, merge1);
puts (merge1);
}
putchar ('\n');
puts ("======================================================");
putchar ('\n');
puts ("第2组字符串c语言函数字符数组参数:");
puts (str2_1);
puts (str2_2);
if (stringCmp (str2_1, str2_2) == 1)
puts (str2_1);
else if (stringCmp (str2_1, str2_2) == -2) {
mergeString (str2_2, str2_1, merge2);
puts (merge2);
}
else if (stringCmp (str2_1, str2_2) == 2 || stringCmp (str2_1, str2_2) == -1) {
mergeString (str2_1, str2_2, merge2);
puts (merge2);
}
putchar ('\n');
puts ("======================================================");
putchar ('\n');
puts ("第3组字符串c语言函数字符数组参数:");
puts (str3_1);
推荐阅读
- asp.net请求机制,asp net state service
- ios8html5的简单介绍
- mysqldump文件6g,mysqldump w
- go语言线下培训 go语言进阶训练营
- 安徽小程序定制开发高清图,郑州小程序定制开发
- css3画边框,css3设置边框颜色渐变
- jquery设置css背景,jquery 设置样式
- mysql怎么拿出来 mysql怎么把数据库导出来
- pg数据库测试工具,数据库测试工具scrawler