2011-03-19 00:28:14|?次阅读|上传:wustguangh【已有?条评论】发表评论
(4)const char * const p
这种是地址及指向对象都不能修改。
---------------------------------------------------------------------
6.下面是C语言中两种if语句判断方式。请问哪种写法更好?为什么?
int n;
if (n == 10) // 第一种判断方式
if (10 == n) // 第二种判断方式
如果少了个=号,编译时就会报错,减少了出错的可能行,可以检测出是否少了=
---------------------------------------------------------------------
7.下面的代码有什么问题?
void DoSomeThing(...) { char* p; ... p = malloc(1024); // 分配1K的空间 if (NULL == p) return; ... p = realloc(p, 2048); // 空间不够,重新分配到2K if (NULL == p) return; ... }
A:
p = malloc(1024); 应该写成:
p = (char *) malloc(1024);
没有释放p的空间,造成内存泄漏。
---------------------------------------------------------------------
8.下面的代码有什么问题?并请给出正确的写法。
void DoSomeThing(char* p) { char str[16]; int n; assert(NULL != p); sscanf(p, "%s%d", str, n); if (0 == strcmp(str, "something")) { ... } }
A:
sscanf(p, "%s%d", str, n);
这句该写成:
sscanf(p, "%s%d", str, &n);
---------------------------------------------------------------------
9.下面代码有什么错误?
void test1() { char string[10]; char *str1="0123456789"; strcpy(string, str1); }
数组越界
---------------------------------------------------------------------