刚刚学习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,对指针的写法很迷糊,不同的写法导致程序能否运行下去 的全部内容, 来源链接: utcz.com/a/113142.html