我已经开始打扰你了另一个可能非常简单的C问题.
使用以下代码:
int get_len(char *string){
printf("len: %lu\n", strlen(string));
return 0;
}
int main(){
char *x = "test";
char y[4] = {'t','e','s','t'};
get_len(x); // len: 4
get_len(y); // len: 6
return 0;
}
Run Code Online (Sandbox Code Playgroud)
2个问题.为什么他们不同,为什么是6?多谢你们.
编辑:对不起,我知道会解决什么问题,我只是想了解发生了什么.那么strlen只是继续转发这个点,直到碰巧找到一个\ 0?此外,当我在主函数而不是get_len函数中执行strlen时,两者都是4.这只是巧合吗?
哪个被认为是更好的风格?
int set_int (int *source) {
*source = 5;
return 0;
}
int main(){
int x;
set_int (&x);
}
Run Code Online (Sandbox Code Playgroud)
要么
int *set_int (void) {
int *temp = NULL;
temp = malloc(sizeof (int));
*temp = 5;
return temp;
}
int main (void) {
int *x = set_int ();
}
Run Code Online (Sandbox Code Playgroud)
为了获得更高级别的编程背景,我得说我更喜欢第二个版本.任何提示都会非常有帮助.还在学习C.