malloc动态申请数组,程序不长,请问是哪里有问题呢
本帖最后由 猪猪虾 于 2020-11-20 21:52 编辑第15行程序报错,显示 invalid conversion from 'char' to char *
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
//**************************************************************************
//实现一个洗牌程序。所谓洗牌程序,就是将所有的扑克牌放入一个数组中,
//要求把数组内的扑克牌顺序随机打乱,然后输出
int number_of_game = 3;
char get_name(int num);
int main()
{
int i;
char *name = NULL;
name= get_name(number_of_game);
for(i = 0; i < number_of_game; i++)
{
printf("the %d member's name is: %s'",i,name);
}
free(name);
}
char get_name(int num)
{
char *ptr = NULL;
int i;
ptr = (char *)malloc(num *sizeof(char));; //*name;这种需要用到动态存储
for(i = 0;i <num;i++)
{
printf("enter %d member's name :",i);
fgets(ptr,100,stdin);
printf("the member's name is: %s'",ptr);
}
return ptr;
} 指针只能指向已经分配空间的变量,可以是已经声明的变量,也可以是动态分配尚未命名的空间。
你这里get_name 的返回值是char,是一个常量,尚未分配空间,所以指针是不能指向它的 sunrise085 发表于 2020-11-20 22:00
指针只能指向已经分配空间的变量,可以是已经声明的变量,也可以是动态分配尚未命名的空间。
你这里get_na ...
老师,我返回的不是一个指针吗,指向数组名
本帖最后由 jackz007 于 2020-11-20 23:57 编辑
函数定义:
char get_name(int num)
改为:
char * get_name(int num)
注意,第 9 行的函数声明也要同时改了。
为什么要把 main() 放在最前面,我通常都是放到最后的,因为,任何函数只要定义位置出现在调用位置之前,就不用进行声明。在本例中,楼主可以试试把 char * get_name(int num) 的函数定义从目前文件的最后位置提前到第 9 行声明这个函数的位置,这样,就不再需要像第 9 行那样的函数声明了。
页:
[1]