【发布时间】:2019-12-02 14:57:08
【问题描述】:
我是新来的编程新手。我的问题是当我尝试为数组指针结构的属性分配一个值时,它不起作用。以下代码没有结构工作:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *array;
int size = 10;
array = malloc(sizeof(int) * size);
int i;
for (i = 0; i < size; i++)
{
array[i] = i * i;
}
for (i = 0; i < size; i++)
{
printf("%d\n", array[i]);
}
}
但是当我输入 struct 时,它会打印 (null):
#include <stdio.h>
#include <stdlib.h>
typedef struct Person
{
unsigned char name;
} Person;
int main()
{
Person *personArray;
int size = 10;
personArray = (Person *)malloc(sizeof(int) * size);
int i;
for (i = 0; i < size; i++)
{
unsigned char name = "Person_name"; //[Warning] initialization makes integer from pointer without a cast
personArray[i].name = name;
}
for (i = 0; i < size; i++)
{
printf("%s\n", personArray[i].name); //Print (null)
}
}
为什么会这样? 如果我是新来的,对不起。
谢谢,下面的代码工作:
#include <stdio.h>
#include <stdlib.h>
typedef struct Person
{
unsigned char *name;
} Person;
int main()
{
Person *personArray;
int size = 10;
personArray = (Person *)malloc(sizeof(Person) * size);
int i;
for (i = 0; i < size; i++)
{
unsigned char *name = "Person_name";
personArray[i].name = malloc(strlen(name) + 1); //[Warning] incompatible implicit declaration of built-in function 'strlen'
strcpy(personArray[i].name, name); //[Warning] incompatible implicit declaration of built-in function 'strcpy'
}
for (i = 0; i < size; i++)
{
printf("%s\n", personArray[i].name);
free(personArray[i].name);
}
free(personArray);
}
【问题讨论】:
-
打开编译器的警告:
unsigned char name = "Person_name";会让它抱怨很多! -
...还有更多警告...