gpt4 book ai didi

c - 从不兼容的指针类型 C 赋值

转载 作者:行者123 更新时间:2023-12-04 09:41:41 27 4
gpt4 key购买 nike

假设我想阅读一个页面列表最多 19 个字符的名称,例如4个(页数) 姓名1 姓名2 姓名3姓名4

我正在尝试使用全局二维数组存储页码和页码名字,我在说赋值时出错来自不兼容的指针类型...

谢谢

static int nPages;
static char** pageName;

int main(void){
scanf(" %d", &nPages);

pageName = (char *)malloc(nPages*sizeof(char));
for(int i=0; i < nPages ;i++){
pageName[i] = (char *)malloc(20*sizeof(char));
scanf(" %s", pageName[i]);
}

//Free Memory Here of coz.

return 0;
}

最佳答案

Never cast the return value of malloc() in C .它隐藏了实际上可以帮助你的编译器警告,而且它从来都不是必需的,所以它只会增加困惑。你应该使用:

pageName = malloc(nPages * sizeof *pageName);

请注意如何避免 pageName 类型名称的重复。这里,sizeof *pageName的意思是“pageName指向的对象的大小”,即“字符指针的大小”。您应该经常期望 sizeof 表达式作为 malloc() 的参数。

此外,sizeof (char) 在 C 中始终为 1,因此可以说,这个特定的表达式增加了更多的困惑,而不是它有助于使代码安全。

关于c - 从不兼容的指针类型 C 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5965546/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com