char a[]={0,1,2,3,4,5};这样的赋字符串正确吗?
当然不正确,虽然编译可过。但a中的字符却不是012345,自己跟踪一下就知道了。
char a[5]="0123";这个应该是对的。
个地方要注意一下strcpy函数的第一个参数要有足够的空间。因为strcpy函数是将字符串复制到第一个参数里面的。如果这里没有错误的话程序运行时能够通过的。那么可以先看一下p的空间是否足够。由于第一条语句char *p="asfdsfds"这里就相当于将p的空间开辟了8个字节,然后第二条语句是使p指向第三个字符处,那么p最后的空间还有6个字节,而strlen的第二个参数只有4个字节当然就不会出现错误了。
一楼所说的char *p="asfdsfds"是定义的常量是不正确的,常量的定义必须加关键字const,这里只是赋初值那么内存数据自然也可以改变了。
我想你运行没有通过时在vc6.0里面吧,我也试过了确实是通不过的。那是因为
vc里面对c语法的限制多一点,可能要明确指出p的大小才行(如定义成数组的形式)因为我很少用vc写程序,不过编译时没有问题的。
这样赋值编译器不会报错 ^_^,是可以正确编译的。
小不正确,如果char 在内存的大小为2的话,int则为4。加上''试试。比如char a[]={'1'};