【发布时间】:2015-09-16 06:48:03
【问题描述】:
我正在练习使用带有指针的malloc() 分配内存,但是关于指针的一个观察是,为什么strcpy() 可以接受str 没有* 的变量:
char *str;
str = (char *) malloc(15);
strcpy(str, "Hello");
printf("String = %s, Address = %u\n", str, str);
但是对于整数,我们需要 * 给 str 一个值。
int *str;
str = (int *) malloc(15);
*str = 10;
printf("Int = %d, Address = %u\n", *str, str);
这真的让我很困惑为什么strcpy() 接受str,因为在我自己的理解中,"Hello" 将被传递到str 的内存位置,这会导致一些错误。
【问题讨论】:
-
去掉 malloc 中的指针。见link
-
为什么?其实这两个程序都运行的很好,就是不明白为什么strcpy可以带这样的参数
-
使用
%p打印一个指针。malloc(15)forint * str也可以在以后产生问题。 -
好的,我试图摆脱强制转换并且效果相同,但我的问题是为什么 strcpy 接受 str 是一个包含内存地址的变量?
-
@SouravKanta 除非您没有 C99 支持,如在 MSVC 中(强制转换使代码更具可移植性)。
标签: c string pointers char strcpy