数组与指针
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;