char* kk;
char* pp="hhhhhhhhhhhhhhhhhh";
1。kk=pp strcpy(kk,pp) 有什么区别?
2。kk的长度有没有限制,我的意思:pp的长度是多少,才能给kk安全赋值?
char* pp="hhhhhhhhhhhhhhhhhh";
1。kk=pp strcpy(kk,pp) 有什么区别?
2。kk的长度有没有限制,我的意思:pp的长度是多少,才能给kk安全赋值?
解决方案 »
- 大家好。请问大家一些关于绘图的问题,谢谢!
- 严肃点! 问个问题(在线&立结)
- 请问VC6中如何删除工程中的某个类?
- 为什么做ISAPI就可以这么高工资啊-薪水范围8000-9999
- 请问汉字的第一个字节ascii>128,那第二个字节呢?怎么判断两个字节是否是汉字呢?
- 数据表排序的小问题
- 关于多线程通讯的问题,高手帮看看
- 求救
- 求算法或者函数:有关求排列组合的 email:[email protected]
- 请教MFC 使用 Mat 内存泄漏问题
- SysAllocString分配的字符串,用SysFreeString释放后,为什么在内存中还有?
- 在vc中如何实现ASCII码与16进制数之间的转换???
kk=pp 把pp的值赋给kk,可用;
strcpy(kk, pp) 把"hhhhhhhhhhhhhhhhhhh"拷贝到kk所指的区域,kk没有初始化,错误;char a[20];
kk = a;
strcpy(kk, pp);
也就是kk这个字符串和pp是一样的
strcpy(kk,pp)表示把pp的字符串内容拷贝给kk
(2) 答:kk的长度为4,pp的长度也是4
因为它们都是指针,指针的长度都是4另外如果要安全附值
请参考
(1) char kk[128],pp[128]="hhhhhhhhhhhhhhhhh";
strcpy(kk,pp);
(2) char *kk,*pp;
kk=(char *)malloc(128);
pp=(char *)malloc(128);
strcpy(kk,"hhhhhhhhhhhhh");注意:你提供的属于不安全的
你可以把pp设置为“123456789”
运行一下你的程序,你发现执行完后
pp的值发生改变了
kk=pp 把pp的值赋给kk,可用;
strcpy(kk, pp) 把"hhhhhhhhhhhhhhhhhhh"拷贝到kk所指的区域,kk没有初始化,错误;char a[20];
kk = a;
strcpy(kk, pp);
--------
区别是kk=pp是正确的,而strcpy(kk,pp)是错误的,编译能通过,但运行会出非法错,英为kk指针根本就没分配存储空间,2。kk的长度有没有限制,我的意思:pp的长度是多少,才能给kk安全赋值?
-----------------------------------------
kk长度不是有没有限制的问题,而是kk根本一个字节长度都没有。你应该这样:
kk=malloc(sizeof(pp)+1);
strcpy(kk,pp);
再深问一句:
1。对于kk=pp,如果pp很长,会不会有问题?
2。如果用malloc之后,给它赋值了,再用realloc,它的数据将发生什么变化?
无论pp多长多短,都没问题,因为按上面他们都是指针
就是说kk和pp在内存里面的地址是一样的2。如果用malloc之后,给它赋值了,再用realloc,它的数据将发生什么变化?
没问题,你可以看如下例子
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>void main( void )
{
long *buffer;
size_t size; if( (buffer = (long *)malloc( 1000 * sizeof( long ) )) == NULL )
exit( 1 ); size = _msize( buffer );
printf( "Size of block after malloc of 1000 longs: %u\n", size ); /* Reallocate and show new size: */
if( (buffer = realloc( buffer, size + (1000 * sizeof( long )) ))
== NULL )
exit( 1 );
size = _msize( buffer );
printf( "Size of block after realloc of 1000 more longs: %u\n",
size ); free( buffer );
exit( 0 );
}
OutputSize of block after malloc of 1000 longs: 4000
Size of block after realloc of 1000 more longs: 8000