0
点赞
收藏
分享

微信扫一扫

WPF学习(10)-Label标签+TextBlock文字块+TextBox文本框+RichTextBox富文本框

黄昏孤酒 2024-08-07 阅读 31

const关键字使用

 

在 C 语言中, const 关键字用于声明常量。以下是 const 关键字的常见用法:
 
1. 修饰变量:
 
- 声明一个值不能被修改的变量。例如: const int num = 10;  在此之后,尝试修改 num 的值将会导致编译错误。
2. 修饰指针:
 
- 指向常量的指针: const int *ptr;  表示指针指向的内容不能通过该指针修改,但指针本身可以指向其他地址。
- 常量指针: int * const ptr;  表示指针本身不能指向其他地址,但可以通过该指针修改其指向的内容。
- 指向常量的常量指针: const int * const ptr;  指针本身和其指向的内容都不能被修改。
3. 作为函数参数:
 
- 可以防止函数内部意外修改传入的参数值。
4. 修饰数组:
 
-  const int arr[] = {1, 2, 3};  数组中的元素不能被修改。
 
 const 关键字的使用可以增强程序的可读性和可维护性,同时有助于避免一些由于意外修改值而导致的错误。

 

指针操作一维字符型数组(字符串)

 

在 C 语言中,使用指针操作字符串具有以下优点:

 

优点:

 

1. 灵活性高:能够直接访问和修改字符串中的字符,提供了更细粒度的控制。

2. 节省内存:通过指针传递字符串可以避免复制整个字符串,从而节省内存和提高性能,特别是在处理大型字符串时。

3. 高效的字符串处理:可以方便地实现字符串的拼接、截取、查找等操作。

 

然而,也存在一些缺点:

 

缺点:

 

1. 容易出错:指针操作需要谨慎处理,否则可能导致内存访问错误,如越界访问,这可能导致程序崩溃或产生不可预测的结果。

2. 可读性较差:对于不熟悉指针操作的开发者来说,代码可能较难理解和维护。

3. 内存管理复杂:需要手动管理内存的分配和释放,若处理不当可能导致内存泄漏。

 以下是指针操作字符串的事例

my_puts

int my_puts(const char *str)
{
	while (*str!= '\0') {
		putchar(*str);
		str++;
	}
	putchar('\n');
	return 0;
}

my_gets

char *my_gets(char *s)
{
	char *ret=s;
	int i = 0;
	while ((*s++ = getchar())!= '\n') ;
	*--s = '\0';
	return ret;
}

my_strlen

size_t my_strlen(const char *str)
{
	size_t len=0;
	while(*str!='\0')
	{
		str++;
		len++;
	}
	return len;
}

my_strcpy

char *my_strcpy(char *dest, const char *src)
{
	char *ret=dest;
	while((*dest++ = *src++) != '\0');
	return ret;
}

my_strncpy

char *my_strncpy(char *dest, const char *src,size_t n)
{
	char *ret=dest;
	while(n && (*dest++ = *src++) != '\0')
		n--;
	while(n--)
		*dest++ = '\0';
	return ret;
}

my_strcat

char *my_strcat(char *dest,const char *src)
{
	char *ret = dest;
	while(*dest++ != '\0') ;
	dest--;
	while((*dest++ =*src++)!='\0');
	return ret;
}

my_strncat

char *my_strncat(char *dest,const char *src,size_t n)
{
	char *ret = dest;
	while(*dest++ != '\0') ;
	dest--;
	while(n && (*dest++ =*src++)!='\0')
		n--;
	if(n)
		*dest='\0';

	return ret;
}

my_strcmp

int my_strcmp(const char *str1,const char *str2)
{
	while(*str1!='\0' && *str2!='\0'&& *str1 == *str2 )
	{
		++str1;
		++str2;
	}
	return *str1-*str2;
}

my_strncmp

int my_strncmp(const char *str1,const char *str2,size_t n)
{
	while(*str1!='\0' && *str2!='\0'&& *str1 == *str2 && n>1 )
	{
		++str1;
		++str2;
		--n;
	}
	return *str1-*str2;
}

my_memcpy

void *my_memcpy(void *dest,const void *src,size_t n)
{
char *q = dest;
const char *p =src;
while(n)
{
	*q++ = *p++;
	--n;
}
return ;
}

 

举报

相关推荐

0 条评论