int *p,*p1;
p + 1,p - 1 相当于在内存空间中从p这个地址开始,平移sizeof(int)个内存空间(这里*p的类型是int)
p 和p1可以进行减法,p - p1,含义是,p1 和p之间有多少个单位的sizeof(int)空间
相同类型的指针可以比较大小
函数指针无法进行加减法
char *str1 = "asdfadsf";
char str2[100] = "121212";
同样是字符串,
str1,str2 同样存放地址,第一个的地址空间里的内容是不能被修改的,而数组是已经分配好了空间,是可以被修改的。
str2,是数组名,也是数组的首地址,是一个指针常量。所以不能进行自加,自减等操作。而作为 char *p,这个p是一个指针变量,可以进行修改。
指针 0 和常数 0可以进行比较,常数0 可以给指针 赋值。
foo()
{
int *p; //这是一个野指针,具体不知道这个值存在那个地址。。。。。。
错误使用方法
*p = 10;
}
strncat()函数:
#include
char *strncat(char *s,char *d,int n);
int main(void)
{
char str1[100] = "12212";
char *str2 = "asdf";
strncat(str1,str2,2);
printf("str1 is %s \n",str1);
return 0;
}
char *strncat(char *s,char *d,int n)
{
while(*++s != '\0')
;
s --;
for(;*d != '\0' && n-- > 0;d++)
*s++ = *d;
while(--n > 0)
*++s = '\0';
}
阅读(1439) | 评论(0) | 转发(0) |