1、字符串初始化。在程序员面试宝典上看到:全局变量未初始化默认为0,局部变量未初始化为未知。我自己试了一下
char a[10]="123";
int main()
{
cout<<a[10]<<endl;
char b[10]="123";
cout<<b[10]<<endl;
return 0;
}
输出都为空,环境是codeblocks。
int a;
int main()
{
int b;
cout<<a<<":"<<b;
return 0;
}
a输出0,b每次输出结果不一样
2.memcpy和strcpy的区别
函数原型就不一样:
void *memcpy(void *dest, const void *src, size_t n)
extern char *strcpy(char* dest, const char *src);
memcpy会把从src开始的n个字符复制给dest,而strcpy的判断截止条件为遇到了'\0'。并且strcpy只用于字符串(数组)
在尝试的过程中也发现:printf输出字符串遇到'\0'就截止了,不再输出'\0'后的内容
3.评价一个算法的好坏
来源于数据结构课件:
正确性
可读性
健壮性
效率
4.指针+n的问题
经常看到指针+n,那相加以后指针到底指向了哪里?
这跟指针本身的类型有关,如:
(char*) (&a)+1得到&a向前移动1*sizeof(char)
(int*) (&a)+1得到&a向前移动1*sizeof(int)