C语言指针二

指针和数组

  • 数组名称保存的就是数组首元素的地址
  • 既然数组名称保存的就是地址, 而指针也是用于保存地址的, 所以指针也可以指向数组
int ages[3] = {1, 3, 5};
int *p = &ages;
  • 结论: 如果利用指针保存数组的地址之后, 那么 p = ages = &ages;
// 要求你写出三种访问数组元素的写法
int ages[3] = {1, 3, 5};
printf("ages[0] = %i\n", ages[0]);//1
int *p = ages;
printf("p[0] = %i\n", p[0]);//1
printf("0[p] = %i\n", 0[p]);//1

指针的加减

  • 指针可以进行加减法
    • 应用场景: 一般都是用在指针数组中

    • 指针变量+1是加多少, 加的就是指针变量类型占用的字节数

    • 注意点:

      1. -1操作一般企业开发不会用到
    • 2.只有指针才可以做+1-1操作, 数组名不可以


指针和字符串

  • 字符串的本质就是数组, 所以指针也可以指向字符串,这样定义字符串又多了一种方式

定义:

    char str1[] = {'x', 'x', 'z', '\0'};
    char str2[] = "xxz";
    char *str4 = "xxz";
  • 利用数组和指针定义字符串的区别
  1. 存储的位置不同

    • 如果是通过数组定义的字符串, 那么存储在内存的栈中

    • 如果是通过指针定义的字符串, 那么存储在内存的常量区中

  2. 由于在内存中存储的位置不一样, 所以特性也不一样

    • 如果是通过数组定义的字符串, 我们是可以手动修改

    • 如果是通过指针定义的字符串, 我们不能手动修改

  3. 由于在内存中存储的位置不一样, 所以特性也不一样

    • 如果是通过数组定义的字符串, 每次定义都会重新开辟存储空间

    • 如果是通过指针定义的字符串, 重复定义不会重新开辟存储空间


字符串数组的第二种形式

  • 字符串数组的第二种格式
    char *str[] = {
        "lnj",
        "abc",
        "def"
    };
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,479评论 3 44
  • 第十章 指针 1. 地址指针的基本概念: 在计算机中,所有的数据都是存放在存储器中的。一般把存储器中的一个字节称为...
    坚持到底v2阅读 1,096评论 2 3
  • 前面写啦一个C语言的指针,发现有同学理解上还有些问题,不过问题你们可以给我留言或者简信。也很感谢给我提出一些意见和...
    xacker阅读 456评论 1 4
  • 学姐免费带啦,主要是为了交朋友喽
    A沵算what阅读 327评论 1 2
  • 文/若儿织梦 图/网络,侵删 西兰花森林中, 毛毛虫在散步。 不能碰它啊! 毛毛虫太大方了。 它会在你手上留下, ...
    若儿织梦阅读 849评论 10 16