c语言复习8-27

#include <stdio.h>
/*1.指针类型决定了指针进行解引用操作的时候,能够访问空间的大小
* int* p  *p能够访问4个字节
* char* p *p能够访问1个字节
* double* p *p能够访问8个字节
* 2.指针类型决定了:指针走一步走多远(只针对步长)
*/
//int main()
//{
//    int a = 0x11223344;
//    int* p1 = &a;
//    char* p2 = &a;
//    *p1 = 0;
//    *p2 = 0;
//    printf("%d\n", p1);
//    printf("%d\n", p2);
//
//    /*
//      0075F7D4
//      0075F7D8
//      0075F7D4
//      0075F7D5
//    */
//    printf("%p\n",p1);
//    printf("%p\n", p1 + 1);
//    printf("%p\n", p2);
//    printf("%p\n", p2 + 1);
//
//    return 0;
//}
/*野指针:
* 1.指针未初始化
* 2.指针越界访问
* 3.指针指向的空间被释放
*/
//int main()
//{
//    //第一种情况:
//    int* p;
//    *p = 20;
//    //第二种情况:
//    int arr[10] = { 0 };
//    int* p = arr;
//    int i = 0;
//    for (i = 0; i <= 11; i++)
//    {
//        *(p++) = i;
//    }
//    return 0;
//}
//int main()
//{
//    char ch[5] = { 0 };
//    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//    printf("%d\n", &arr[9] - &arr[0]);//9    //下标9到下标0中间元素的个数
//    printf("%d\n", &arr[9] - &ch[0]);//不可控,随机数
//    return 0;
//}
//求字符串的成度
//int my_strlen(char* str)
//{
//    char* start = str;
//    char* end = str;
//    while(*end != '\0')
//    {
//        end++;
//    }
//    return end - start;
//}
//int main()
//{
//    char arr[] = "bit";
//    int len = my_strlen(arr);
//    printf("%d\n", len);//3
//    return 0;
//}
//int main()
//{
//    int arr[10] = { 0 };
//    printf("%p\n", arr);//首元素的地址
//    printf("%p\n", arr + 1);
//    
//    printf("%p\n", &arr[0]);
//    printf("%p\n", &arr[0] + 1);
//
//    printf("%p\n", &arr);//整个数组的地址
//    printf("%p\n", &arr + 1);
//    //两个例外:
//    //1.&arr-&数组名-数组名不是首元素的地址,表示整个数组--&数组名-取出的是整个元素的地址
//    //2.sizeof(arr)--sizeof(数组名)--数组名表示的是整个数组--sizeof(数组名)计算的是整个数组的大小
//
//
//    return 0;
//}
//可以直接通过指针访问数组
//int main()
//{
//    int arr[10] = { 0 };
//    int* p = arr;
//    int i = 0;
//    for (i = 0; i < 10; i++)
//    {
//        *(p + i) = i;
//    }
//    for (i = 0; i < 10; i++)
//    {
//        printf("%d  ", arr[i]);
//    //    printf("%d ", *(p + i));
//    }
//    return 0;
//}
//二级指针
//int main()
//{
//    int a = 10;
//    int* pa = &a;//存放的是a的地址
//    int** ppa = &pa;//二级指针,存放的是pa的地址
//    //二级指针
//    printf("%d\n" ,**ppa);
//    printf("%d\n", a);
//    return 0;
//}
//指针数组->数组->存放指针的数组
//数组指针->指针
int main()
{
    int a = 10;
    int b = 20;
    int c = 30;
    //int arr[10];
    int* arr2[3] = {&a,&b,&c};//指针数组
    int i = 0;
    for (i = 0; i < 3; i++)
    {
        printf("%d ", *(arr2[i]));//10 20 30
    }
    printf("\n");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值