• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
莉er
博客园    首页    新随笔    联系   管理    订阅  订阅
C语言指针(一)

一、指针

定义指针变量

   指针指向的数据类型 *指针变量名称;

   例: int *p;

 *作用:

     1、在定义变量的时候 * 是一个类型说明符,说明定义的这个变量是一个指针变量

     2、在不是定义变量的时候 *是一个操作符,访问指针所指向存储空间

   &作用:

     &作为单目操作符,放在变量的前面,是取出变量的地址

    * 与 & 他们是一对反操作

指针初始化

int age = 10;

int *p = &age;//定义指针同时初始化

三、指针与字符串

1、使用字符数组来保存的字符串是保存栈里的,保存栈里面东西是可读可写,所有我们可以改变里面的字符

     当把一个字符串常量赋值一个字符数组的时候,那么它会把字符串常量中的没有字符都放到字符数组里面

  2、使用字符指针来保存字符串,它保存的是字符串常量地址,常量区是只读的,所以我们不可以修改字符串中的字符

1、多个指针变量可以指向同一个地址

  2、指针的指向是可以改变的

  注意点:

    1、指针没有初始化里面是一个垃圾值,这时候我们这是一个野指针,

       如果操作一个野指针

         1、可能会导致程序崩溃

         2、访问你不该访问数据

       所以指针必须初始化才可以访问其所指向存储区域

    2、指针变量不可以直接赋值一个整形常量,

       因为我们不知道这个整形常量是内存那块地址

二、指针与数组

数组不是一个指针

    数组像一个指针,我们可以通过访问指针所指向的存储空间的方式去访问数组中元素

    使用数组名与使用指向数组的指针都可以访问数组中的元素

    char nums[] = {1,2,3,4,5};// 定义一个数组

    printf("nums = %p\n",nums);// 输出数组的地址

    printf("%d\n",nums[1]);

    char *p  = nums;// 把数组的地址给变量p,数组名就是数组的地址

    printf("%d\n",*p);

   // 多种输出方式

    printf("nums[4] = %d\n",nums[4]);

    printf("nums[4] = %d\n",*(nums+4));

    printf("nums[4] = %d\n",p[4]);

    printf("nums[4] = %d\n",*(p + 4));

    printf("nums[4] = %d\n",4[p]);

三、指针与字符串

1、使用字符数组来保存的字符串是保存栈里的,保存栈里面东西是可读可写,所有我们可以改变里面的字符

     当把一个字符串常量赋值一个字符数组的时候,那么它会把字符串常量中的每个字符都放到字符数组里面

  2、使用字符指针来保存字符串,它保存的是字符串常量地址,常量区是只读的,所以我们不可以修改字符串中的字符

 

posted on 2015-08-09 12:16  lier莉儿  阅读(153)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3