指针与数组的分析

简介: 指针与数组的分析

指针之间只支持减法运算,参与减法运算的指针类型必须相等

注:1,只有当两个指针都指向同一个数组中的元素是,指针相减才有意义,其意义为:指针所指元素的下标差

       2,当两个指针指向的元素不在同一个数组中时,结果未定义

char s1[] = {'H', 'e', 'l', 'l', 'o'};
    int i = 0;
    char s2[] = {'W', 'o', 'r', 'l', 'd'};
    char* p0 = s1;
    char* p1 = &s1[3];
    char* p2 = s2;
    int* p = &i;
    printf("%d\n", p0 - p1);--------》-3


指针也可以进行关系运算(>  <  ==   !=)必须是同类型的;

指针运算规则:p+n      <------>    (unsigned int)p+n*sizeof(*p);

char s[] = {'H', 'e', 'l', 'l', 'o'};
    char* pBegin = s;
    char* pEnd = s + DIM(s); // Key point
    char* p = NULL;
    printf("pBegin = %p\n", pBegin);
    printf("pEnd = %p\n", pEnd);
    printf("Size: %d\n", pEnd - pBegin);
    for(p=pBegin; p<pEnd; p++)
    {
        printf("%c", *p);
    }


下标形式   和     指针形式

 a[ n ]   <--> *( a + n )<--> * ( n + a )    <-->   n[ a ]

a    和    & a 的区别:

     a+1------->   (unsigned int) a  + sizeof(* a)

     & a +1-------->(unsigned int)(&a ) + sizeof(* & a)--------->(unsigned int)(&a)+sizeof( a )

 int a[5] = {1, 2, 3, 4, 5};
    int* p1 = (int*)(&a + 1); 
    int* p2 = (int*)((int)a + 1);
    int* p3 = (int*)(a + 1);
     printf("%d, %d, %d\n", *p1, *p2, *p3);
    printf("%d, %d, %d\n", p1[-5], p2[0], p3[1]);
    // B. p1[-1]将输出5,p2[0]输出随机数, p3[1]输出3

数组作为函数参数时,编译器将其编译成对应的指针------->所以有了虚幻函数参数这么一说(一般,当定义的函数中有数组参数时,需要定义另一个参数来标识数组的大小)

相关文章
|
22天前
|
存储 编译器 C语言
函数指针&&数组指针&&数组传参的本质&&字符指针(进阶篇)
函数指针&&数组指针&&数组传参的本质&&字符指针(进阶篇)
|
2月前
|
C语言
指向结构体数组的指针
指向结构体数组的指针
15 2
|
2月前
|
存储 算法 C语言
通过指针引用数组元素
通过指针引用数组元素
20 0
|
2月前
|
C语言 C++
数组元素的指针
数组元素的指针
10 0
|
2月前
|
存储 C++
使用字符指针变量和字符数组的比较
使用字符指针变量和字符数组的比较
13 0
|
29天前
|
搜索推荐 C语言 C++
【C指针(五)】6种转移表实现整合longjmp()/setjmp()函数和qsort函数详解分析&&模拟实现3
【C指针(五)】6种转移表实现整合longjmp()/setjmp()函数和qsort函数详解分析&&模拟实现
|
29天前
|
存储
【C指针(五)】6种转移表实现整合longjmp()/setjmp()函数和qsort函数详解分析&&模拟实现2
【C指针(五)】6种转移表实现整合longjmp()/setjmp()函数和qsort函数详解分析&&模拟实现
|
29天前
|
C语言
【C指针(五)】6种转移表实现整合longjmp()/setjmp()函数和qsort函数详解分析&&模拟实现1
【C指针(五)】6种转移表实现整合longjmp()/setjmp()函数和qsort函数详解分析&&模拟实现
|
9天前
|
存储 人工智能 C++
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
29 1
|
10天前
|
存储 C语言
指针数组作为main函数的形参
指针数组作为main函数的形参
13 0