图中代码为什么打印不出来name
改成数组的方式定义和初始化name 是没有问题的,实在想不通
编译环境是VC++6.0
求解惑!!!
sizeof指针和sizeof数组是不一样的,sizeof数组是计算数组的大小,sizeof指针是计算指针变量本身的大小,32位下面为4个字节,64位下面为8个字节
int i; //sizeof(i) == 4
int ia[5]; //sizeof(ia) == 20
int *pia = ia; //32位:sizeof(pia) == 4, 64位:sizeof(pia)==8
char* s = "abcde"; //32位:sizeof(s) == 4, 64位:sizeof(s)==8
char sa[]= "abcde"; //sizeof(sa) == 6
char *psa = sa; //32位:sizeof(psa) == 4, 64位:sizeof(psa)==8
别把指针直接赋初值给字符常量。字符常量肯定不能再被赋值。
一个字符串常量,存放在静态数据区,字符数组是放在栈中
这样算全局变量了吧?还是有问题,打印不了,应该跟之前一样是挂在strcpy那儿了
分配内存,用malloc函数,#include
字符串常量在静态存储区,a【4】这样的数组存放在栈中由编译器自动分配释放 ,char*这样要自己去申请内存,或者赋值类似p = “13213”;
就是把字符串常量“123456”的地址赋给了p,不申请系统不知道将读入的东西放到哪里,而且这是崩溃在了scanf那里