C语言之自定义类型指针

对于自定义类型,我举个字符串拷贝为例子。

#define _CRT_SECURE_NO_WARNINGS
#include
#include

int main(int argc, char* argv)
{
	char buf[24] = "hello word";
	char name[24];
	strcpy(name, buf);
	printf("%s\n", name);
	return 0;
}

我们需要用 strcpy()函数来进行拷贝,以下是错误的

name = buf;

为什么不能使用数组名来进行拷贝字符串呢?
针对于这个问题:
首先 数组名 并不是实际存在的,它没有内存它只是表示一段内存的起始地址。

那么有的人会这样考虑,如果是这样呢?

*name = *buf;

但是这样也只能拷贝首字符串,因为 它们是char 字符串,可操作的长度只有1个字节。

基本类型中,也没有长达 24字节的可操作类型。

那么如果,如果使用自定义类型呢?只要刚好满足数组的可操作长度,那是否可以下点功夫呢?

#define _CRT_SECURE_NO_WARNINGS
#include
#include

typedef struct
{
	char buf[24];
}UserType,* UserTypePtr;

int main(int argc, char* argv)
{
	char buf[24] = "hello word";
	char name[24];
	*(UserTypePtr)name = *(UserTypePtr)buf;
	printf("%s\n", name);
	return 0;
}

至于类型成员,我就不说了。自定义类型指针,最大的特征就是可操作的长度不同。
关于更多的指针系列,有缘再讲。
文章时间2019年12月13日10:49:48

你可能感兴趣的:(C语言之指针系列)