C语言 定义数组问题

当一个函数中定义了一个自动分配内存的数组时 如void fun(char *a)
在主函数中如何定义 输入 输出一个未知长度的数组
fresh man 求教

字符数组不能直接将字符串直接赋给数组,只能一个元素一个元素的赋值,但是用指针可以。用数组赋值的话可以把它改下,改成char
s[20]={"right!"};
用指针赋初值可以这样改:char
*p;p="right!";
char
*p;意思就是定义一个字符指针,用来存放字符串的首地址。p="right!";是将字符串的首地址赋给p。这在你以后学到指针时就会明白了,自然也明白了为什么c语言中,不能将字符串直接赋给字符数组了。现在可以不深究,只要知道这样就行了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-20
动态分配,定义自行百度,下面是代码
int *a;int n;int i;
printf("please input value of n"); //input the number of arry a[]
a=(int *)malloc(sizeof(int)*n); //asign space or :a=(int *)relloc(sizeof(int),n)
if(a==0) exit(0); //asign fallen!return system
如果是char 把int 换成char 还要注意一点,初始化的时候,比如char *a;分配好了空间
最好用变量来赋值比如a[2]='a';如果scanf(“”)循环输入,不要在for循环里加任何提示语句,输入时也不要在每一个子符间加空格,这样会结果出错,原因还在探究中,int型就没事,最后要free(a);本回答被提问者和网友采纳
第2个回答  2014-11-20
c和c++的数组没办法这么用,当你采用自动分配内存的时候,你创建的实际上就是一个指针了。研究一个指针的长度是没有意义的,如果说你需要一个能够在某个方法中动态分配空间并且可以随时获取长度的类似数组的东西,请了解一下容器类,如vector,list等,在c和c++中,这些容器类才是使用的最广泛的。
第3个回答  2014-11-20
首先数组是固定长度的。不固定长度的是链表。
虽然C语言中可以用字符数组来代替字符串,但仍是不同概念,不能混用。
比如:字符串中仍以'\0'作为结束字符来判断数组是否结束(串终止)。
如果是其它类型,用户自定义结束符。
相似回答