栈区内存的使用习惯是先使用高地址空间,再使用低地址空间
void my_str(char* des, char* src)
{
while (*des++=*src++)
{
;
}
}
//写一个strcpy
int main()
{
char arr1[] = "xxxxxxxxxxxx";
char arr2[] = "hello";
my_str(arr1, arr2);
printf("%s", arr1);
}
const修饰指针变量
const int * p :放在的左边,修饰的是p,表示指针指向的内容不能通过指针来改变的。但是指针变量本身可以修改
int * const p:放在*的右边,表示指针变量不可以修改,指针指向的内容可以修改
#include <assert.h>
size_tmy_strlen(const char *str)
{
assert(str != NULL);
size_t len = 0; //无符号整型
while (*str++)
{
len++;
};
return len;
}
//写一个strlen
int main()
{
char c[] = "abc";
int len = my_strlen(c);
printf("%d", len);
}
void reverse(char* left, char *right)
{
while (left < right)
{
char temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
//字符串逆序
int main()
{
//全部字符串逆序
char arr[100] = {0};
gets(arr);
int len = strlen(arr);
reverse(arr, arr + len - 1);
//printf("%s\n", arr);
//空格隔开的字符逆序
char* start = arr;
while (*start)
{
char* end = start;
while (*end != ' ' && *end != '\0')
{
end++;
}
reverse(start, end-1);
if (*end=' ')
{
start = end + 1;
}
else
{
start = end;
}
}
printf("%s", arr);
}