C语言基础 入门学习(五)

数组与指针

1.下列代码代表什么

int a[10]={1,2,3};
a+sizeof(int);//  a+4  四代表 4*4  16字节,相当于指针向后移16字节指向a[4]
&a[0]+1;//a[0]向后移一位4个字节,即指向a[1]
(int *)&a+1;//先(int *)&a      再+1;即先对a[0]地址强转,然后a[0]向后移1位 4个字节  指向a[1]
(int *)((char *)&a+sizeof(int));//(char*)&a+4---->将a强转char*类型,向后移4字节 再强转为int*类型  即指向a[1]

2.大端与小端
大端:底地址存放高数据;
小端:底地址存放底数据;

判断大小端

bool IsBig()
{
	int a = 0x12345678;
	char *p = (char *)&a;
	if (*p == 0x78)
	{
		return false;//小端
	}
	return true;//大端
}

3.strlen函数
strlen是求字符串长度的库函数,使用时加头文件string.h 返回值为 无符号整型
定义一个求字符串长度的功能函数

int My_strlen(char*str)
{
	int len = 0;
	while (*str++ != ‘\0’)//指针向后移动,只要不指向内容为'\0'  len就加1
	{
		len++;
	}
	return len;
}

4.strcpy函数
strcpy是字符串复制的库函数,使用时加头文件string.h
定义一个字符串复制的功能函数

char* My_strcpy(char *str1, const char *str2)
{
	char *p = str1;
	assert(str1 != NULL&&str2 != NULL);
	while(*str1++=*str2++){}
	return str1;
}
//或者
char* My_strcopy(char *str1, const char *str2)
{
	
	int i;
	for (i = 0;str2[i]!='\0';i++)
	{
		str1[i] = str2[i];
	}
	str1[i] = '\0';//手动赋值'\0'
	return *str1;

猜你喜欢

转载自blog.csdn.net/zhangfei5354/article/details/83268056