指针例题详解
来源:互联网 发布:sql注入绕过安全狗 编辑:程序博客网 时间:2024/05/01 11:00
void test2() { char string[10], str1[10]; int i; for(i=0; i<10; i++) { str1= 'a'; } strcpy( string, str1 ); }
错误:
链接:https://www.nowcoder.com/questionTerminal/f8209ee66a1b43158ebdec8814b0cdfb?orderByHotValue=1&done=0&pos=20&onlyReference=false
来源:牛客网
第一,数组越界访问。 第二,数组名不能坐左值直接进行赋值,
第三,strcopy函数的字符串复制是只有遇到\0才停止,而str1中没有\0,所以复制的长度不确定。 第四,string和str1由于是在函数内定义,不是全局变量,所以数组内初始值不确定,strcpy复制操作具有不确定性
void GetMemory( char *p ) { p = (char *) malloc( 100 ); } void Test( void ) { char *str = NULL; GetMemory( str ); strcpy( str, "hello world" ); printf( str ); }
传入中 GetMemory( char *p ) 函数的形参为字符串指针,在函数内部修改形参并不能真正的改变传入形参的值,执行完
char *str = NULL;
GetMemory( str );
后的 str 仍然为 NULL
char *GetMemory( void ) { char p[] = "hello world"; return p; } void Test( void ) { char *str = NULL; str = GetMemory(); printf( str ); }
错误:p是局部变量,函数返回,内存就已释放
void GetMemory( char **p, int num ) { *p = (char *) malloc( num ); } void Test( void ) { char *str = NULL; GetMemory( &str, 100 ); strcpy( str, "hello" ); printf( str );
错误:未判断内存是否申请成功,应加上:
if ( *p == NULL )
{
…// 进行申请内存失败处理
}
同时Test 函数中也未对 malloc 的内存进行释放。
swap( int* p1,int* p2 ) { int *p; *p = *p1; *p1 = *p2; *p2 = *p; }
在 swap 函数中, p 是一个 “ 野 ” 指针,有可能指向系统区,导致程序运行的崩溃。在 VC++ 中 DEBUG 运行时提示错误 “Access Violation” 。该程序应该改为
swap( int* p1,int* p2 ) { int p; p = *p1; *p1 = *p2; *p2 = p; }
0 0
- 指针例题详解
- C++中指针与引用区别【例题详解】
- 关于指针与数组的相关例题详解
- 指针高级例题
- 数组与指针例题
- 指针 例题:报数
- c语言指针例题
- 指针数组例题分析
- 指针数组 例题
- 指针经典例题
- 指针典型例题
- 彻底搞定C指针例题
- C语言的指针例题
- c语言例题指针三
- C语言指针的例题
- c语言指针例题解答
- 划分子网例题详解
- 划分子网例题详解
- 如何上传自己的代码到Git上
- [Aha]镖局运镖
- <32>python学习笔记——常用模块
- HBase 1.0.0 API的变化
- 258. Add Digits
- 指针例题详解
- 聚合maven+spring-boot打包可执行jar
- Ubuntu下QT creator查看pixhawk工程
- 大海波涛
- 关于Tomcat 加入项目问题
- Day1 html5
- White_Society_March_9 【小组练习】【--完结--】
- linux-rpm
- SAX解析xml 例子使用