刚刚学习C,对指针的写法很迷糊,不同的写法导致程序能否运行下去

这样的写法不能打印内容刚刚学习C,对指针的写法很迷糊,不同的写法导致程序能否运行下去

换成这个就能打印了刚刚学习C,对指针的写法很迷糊,不同的写法导致程序能否运行下去

这两种写法有什么区别吗?

回答

struct teacher{

char* name;

int age;

} tec;

//64位程序,字节对齐后16个直接大小

cout << sizeof(tec) << "::" << sizeof(struct teacher) <<endl;

struct teacher* t = (struct teacher*)malloc(sizeof(tec));

t->name = (char*)malloc(sizeof(char)*5);

//如上分别申请结构和字符串的空间,字符串长度只要比“牛玲”长度+1,不发生缓冲溢出就没问题

printf("%p %p\n", t->name, t);

//这个可看地址的分配情况

strcpy(t->name, "牛玲");

t->age =19;

printf("%s %d\n", t->name, t->age);

free(t->name);

free(t);

fflush(stdout);

输出结果

16::16

0x55bdb8eaf050 0x55bdb8eaf030

牛玲 19

贴的图可见无论10还是20,字符串没有问题,整个过程是对的,问题不是发生在这里,可能是上下文其他地方不对了吧

以上是 刚刚学习C,对指针的写法很迷糊,不同的写法导致程序能否运行下去 的全部内容, 来源链接: www.h5w3.com/113142.html

回到顶部