char* p为啥是值传递不是址传递,str难道传过去的不是地址吗
#include"stdio.h"#include"stdlib.h"
#include"string.h"
void GetMemory(char *p)
{
p = (char*)malloc(100);
}
void Text(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str,"hello,world!");
printf(str);
}
int main()
{
Text();
}
传的是地址,但是你那块地址没有空间放你的字符串,
#include"stdio.h"
#include"string.h"
void GetMemory(char *p)
{
p = (char*)malloc(100);
}
void Text(void)
{
char str;
GetMemory(str);
strcpy(str,"hello,world!");
printf(str);
}
int main()
{
Text();
}
isdkz 发表于 2022-3-6 15:00
传的是地址,但是你那块地址没有空间放你的字符串,
为啥呀,为啥他又开辟了一块地址,而不是指向同一块地址
#include"stdio.h"
#include"string.h"
void GetMemory(char *p)
{
*p = 'c';
}
void Text(void)
{
char *str;
GetMemory(str);
printf(str);
}
int main()
{
Text();
}
isdkz 发表于 2022-3-6 15:00
传的是地址,但是你那块地址没有空间放你的字符串,
#include"stdio.h"
#include"string.h"
void GetMemory(char *p)
{
*p = 'c';
}
void Text(void)
{
char *str;
char b = 'b';
str = &b;
GetMemory(str);
printf(str);
}
int main()
{
Text();
}
c烫淘?Press any key to continue
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <malloc.h>
#include <string.h>
void GetMemory(char** p) // <---------- 注意这里
{
*p = (char*)malloc(100 * sizeof(char)); // <---------- 注意这里
}
int main()
{
char* str = NULL;
GetMemory(&str); // <---------- 注意这里
strcpy(str, "hello, world!");
printf("%s", str); // <---------- 注意这里
free(str);
} 你把char*当成一个数据类型看,要想改变他的值,就得传引用或者指针,所以你得传char*&或者char**
其实函数传参数时会把传入的参数拷贝一份到自己的形参,而引用只是把参数地址传过去,具体你可以搜一下深拷贝和浅拷贝
页:
[1]