28-29-指针和数组

来源:互联网 发布:软件测试缺陷报告 编辑:程序博客网 时间:2024/06/06 03:08

1、数组的本质

这里写图片描述

#include <stdio.h>int main(){    int a[5] = {0};    int* p = NULL;    printf("a = 0x%X\n", (unsigned int)(a));    printf("a + 1 = 0x%X\n", (unsigned int)(a + 1));    printf("p = 0x%X\n", (unsigned int)(p));    printf("p + 1 = 0x%X\n", (unsigned int)(p + 1));    return 0;}a = 0x4A6D54F0a + 1 = 0x4A6D54F4p = 0x0p + 1 = 0x4

2、指针与整数运算

这里写图片描述

3、指针与指针运算

这里写图片描述

4、指针比较

这里写图片描述

#include <stdio.h>int main(){    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);    //printf("%d\n", p0 + p2); //ERROR    printf("%d\n", p0 - p2);      // printf("%d\n", p0 - p);  //ERROR    //printf("%d\n", p0 * p2); //ERROR    //printf("%d\n", p0 / p2); //ERROR    return 0;}-3-16
#include <stdio.h>#define DIM(a) (sizeof(a) / sizeof(*a))int main(){    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);    }    printf("\n");    return 0;}pBegin = 0x7ffdde8ffa10pEnd = 0x7ffdde8ffa15Size: 5Hello

5、小结

这里写图片描述

6、数组访问方式

这里写图片描述

7、下标访问与指针访问

这里写图片描述

8、a和&a的区别

这里写图片描述

#include <stdio.h>int main(){    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[-1], p2[0], p3[1]);    return 0;}// A. 数组下标不能是负数,程序无法运行

9、数组参数

这里写图片描述

#include <stdio.h>void func1(char a[5]){    printf("In func1: sizeof(a) = %d\n", sizeof(a));    *a = 'a';    a = NULL;}void func2(char b[]){    printf("In func2: sizeof(b) = %d\n", sizeof(b));    *b = 'b';    b = NULL;}int main(){    char array[10] = {0};    func1(array);    printf("array[0] = %c\n", array[0]);    func2(array);    printf("array[0] = %c\n", array[0]);    return 0;}In func1: sizeof(a) = 8array[0] = aIn func2: sizeof(b) = 8array[0] = b

10、小结

这里写图片描述

原创粉丝点击