怎么将 函数得出来的字符串 重新赋给 字符数组转换成字符串参数

传递数组给函数的3个原则
1.函数调用时只需传递数组名。
2.在函数定义中,形参的类型必须与数组的相同,数组的大小不必指定。
3.函数原型必须定义为参数是一个数组。
#include &stdio.h&
#include &stdlib.h&
void sort(int x[], int m);
int main()
int marks[5] = {40, 90, 73, 81, 35};
printf("Marks before sorting\n");
for(i = 0; i & 5; i++)
printf("%d ", marks[i]);
printf("\n");
sort(marks, 5);
printf("Marks after sorting\n");
for(i = 0; i & 5; i++)
printf("%d ", marks[i]);
printf("\n");
system("pause");
void sort(int x[], int m)
int i, j ,
for(i = 1; i &= m-1; i++)
for(j =1; j &= m-i; j++)
if(x[j-1] &= x[j])
t = x[j-1];
x[j-1] = x [j];
1.函数调用时只需传递数组名。
2.在函数定义中,必须使用两个方括号以表明数组为二维的。
3.必须指定数组第二个维的大小。
4.函数原型的定义必须与函数头相同。
将字符串传递给函数
1.要传递的字符串必须在定义时声明为函数的形参。例如:
void display(char item_name[])
2.函数原型必须能表示参数是字符串。对于上面的函数定义,其原型可以写做:
void display(char str[]);
3.函数调用必须带一个无下标的字符串数组名作为其实参。例如:
display(name);
其中,name是在调用函数中已正确声明的字符串数组。
在C语言中,与数组一样,字符串不能按值传递给函数。
Views(...) Comments()C语言_给字符数组赋值的方法
ZZ过来之后,又经过自己改动一下,就发了,转载地址忘记了。。。
char a[10];
怎么给这个数组赋值呢?
1、定义的时候直接用字符串赋值
char a[10]="hello";
注意:不能先定义再给它赋值,如char a[10];
a[10]="hello";这样是错误的!
2、对数组中字符逐个赋值
char a[10]={'h','e','l','l','o'};
3、利用strcpy
char a[10]; strcpy(a, "hello");
易错情况:
1、char a[10];
a[10]="hello";//一个字符怎么能容纳一个字符串?况且a[10]也是不存在的!
2、char a[10];
a="hello";//这种情况容易出现,a虽然是指针,但是它已经指向在堆栈中分配的10个字符空间,现在这个情况a又指向数据区中的hello常量,这里的指针a出现混乱,不允许!
3、补充一点 char *a;
a="hello";//这种情况是正确的。
还有:不能使用关系运算符“==”来比较两个字符串,只能用strcmp() 函数来处理。
C语言的运算符根本无法操作字符串。在C语言中把字符串当作数组来处理,因此,对字符串的限制方式和对数组的一样,特别是,它们都不能用C语言的运算符进行复制和比较操作。
直接尝试对字符串进行复制或比较操作会失败。例如,假定str1和str2有如下声明:
char str1[10], str2[10];
利用=运算符来把字符串复制到字符数组中是不可能的:
"abc";&&&&
str1;&&&&&&
C语言把这些语句解释为一个指针与另一个指针之间的(非法的)赋值运算。但是,使用=初始化字符数组是合法的:
char str1[10] = "abc";
这是因为在声明中,=不是赋值运算符。
试图使用关系运算符或判等运算符来比较字符串是合法的,但不会产生预期的结果:
if (str1==str2)
这条语句把str1和str2作为指针来进行比较,而不是比较两个数组的内容。因为str1和str2有不同的地址,所以表达式str1 ==
str2的值一定为0。
今天同学就问了一个这么简单的问题,我就是出错了,尴尬呀
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 字符串数组 的文章

 

随机推荐