优秀代码:
1,好习惯
2,assert,断言
3,const修饰
//复制函数strcpy
void my_strcpy(char* dest, char* src) {
while (src!='\0') {
*dest = *src;
dest++;
src++;
}
*dest = *src;//把结束标志'\0'复制过去
}
//优化1:代码优化
void my_strcpy(char* dest, char* src) {
while (*dest++ = *src++) {
;//空语句
}
}
void my_strcpy(char* dest, char* src) {
while (*dest++ = *src++)
;//空语句
}
//优化2:arc,dest为空指针报错(空指针不能进行解引用操作)
#include<assert.h>
void my_strcpy(char* dest, char* src) {
assert(src != NULL);//断言判断条件,为真发生,为假报错
assert(dest != NULL);
while (*dest++ = *src++) {
;//空语句
}
}
//优化3:const修饰变量(写反不能用)
#include<assert.h>
void my_strcpy(char* dest, const char* src) {
assert(src != NULL);//断言判断条件,为真发生,为假报错
assert(dest != NULL);
while (*dest++ = *src++) {
;//空语句
}
}
const int num = 10;
const int* p = #
int n = 100;
*p = 20//错误
p = &n;//ok
//const修饰指针变量的时候
//const如果放在*的左边,修饰的是*p,表示指针指向的
//内容,是不能通过指针来改变的
//但是指针变量本身是可以修改的:p=&n;
const int num = 10;
int* const p = #
int n = 100;
*p = 20//ok
p = &n;//err
//const修饰指针变量的时候
//const如果放在*的右边,修饰的是指针变量p,表示指针变量不能改变
//
//但是指针的内容是可以修改的