Chinaunix首页 | 论坛 | 博客
  • 博客访问: 437594
  • 博文数量: 71
  • 博客积分: 26
  • 博客等级: 民兵
  • 技术积分: 1246
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-23 14:46
个人简介

linux --- 一切皆文件

文章分类

全部博文(71)

文章存档

2021年(1)

2019年(2)

2018年(4)

2017年(7)

2016年(11)

2015年(1)

2014年(2)

2013年(33)

2012年(10)

分类: C/C++

2013-05-22 23:27:31


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) |
给主人留下些什么吧!~~