C 有人能复习一下这个练习吗?我是对的,但我想澄清几件事
程序应该打印什么?C 有人能复习一下这个练习吗?我是对的,但我想澄清几件事,c,pointers,memory,sample,strcpy,C,Pointers,Memory,Sample,Strcpy,程序应该打印什么? A)世界你好 B) ello_世界 C) 世界杯 D) lo_world E) 非法内存访问,未定义的行为 我的解剖,一行一行。请校对,我几周前刚开始学习C,指针/内存管理开始在我的大脑中“点击”了 声明一个名为“myfunc”的void类型函数,该函数有1个参数:ptr到ptr到char数组“param” 定义“myfunc”:返回带前缀增量的参数“param” 为字符数组“字符串”定义ptr,为“字符串”ptr分配64字节的内存 将字符串“hello_World”指定给“
A)世界你好
B) ello_世界
C) 世界杯
D) lo_world
E) 非法内存访问,未定义的行为 我的解剖,一行一行。请校对,我几周前刚开始学习C,指针/内存管理开始在我的大脑中“点击”了
1 void myfunc(char** param){
2 ++param;
}
int main(){
3 char* string = (char*)malloc(64);
4 strcpy(string, "hello_World");
5 myfunc(&string);
6 myfunc(&string);
7 printf("%s\n", string);
// ignore memory leak for sake of quiz
8 return 0;
}
不会做你期望的事情。它在本地修改参数
,对调用函数中的字符串
的值没有影响。您需要使用:
void myfunc(char** param){
++param;
}
如果您想更改
string
在main
中指向的内容,并且由于调用了malloc(64),但从未释放,因此存在内存泄漏。一个C测试,用于强制转换malloc
的返回值?嗯,请校对一下好吗?真的吗?让我换个说法。“请原谅我的语法错误,因为我刚刚开始,如果你能很好地指出他们,这将是非常有帮助的。”:和Cody,问答的制造商以前推荐的C++编译器,所以,也许他们只是为了避免隐式施放而倾向于安全的一面?我知道,但他问为什么这个练习说要忽略内存泄漏。谢谢。因此,如果我想释放内存,我可以释放行(字符串);评论在哪里?
void myfunc(char** param){
++(*param);
}