2.10一级指针初识

Posted wlstm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.10一级指针初识相关的知识,希望对你有一定的参考价值。


【注:自己从老师讲解出理解的,不对的地方望指正】

【注:本程序验证是使用vs2013版】

刚学c的一句话:独学而无友,孤陋而寡闻

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma warning(disable:4996)
int main(void)
    /*
        1.指针是一种数据类型,是指它指向的内存空间的数据类型。
        2.初始化的指针是一个变量,是变量的话内存就需要给这个变量存放的地方,有了存放的地方就有地址。
        3.指针的地址:存放地方的地址。
        4.指针的指向:存放指针的地方。
        5.指针指向内容:内存中的其他内存块。
        6.编译器对待指针和一般变量是一样的处理方法。
        7.不允许向NULL、未知、非法 地址拷贝内容。
        8.void类型的指针。
    */

    /*1查询指针的长度*/
    int *p = NULL;
    char ************q = NULL;
    printf("sizeof(p)=%d\\nsizeof(q)=%d\\n", sizeof(p), sizeof(q)); //指针长度是4个字节(32位编译器)
  技术图片
/*2~5指针地址、指针指向、指针指向内容*/ int x = 10; int *a = &x; //创建变量a,这个变量是指针变量(不要老想着将*a 连在一起),这个变量指向了变量x的地址 printf("&a: %p\\n",&a); // a的地址 ( &a:取a变量的地址) printf("a:%p\\n", a); // a的指向 (其实就是x的地址,不过是存放在a变量内部的) printf("*a: %d\\n",*a); // a的指向内容 (*:取出该地址内部的内容) printf("&x:%p\\n",&x); //x的地址,跟a的值对比,相同
技术图片
/* 6指针变量跟其它变量 --这里将普通变量当成指针变量来使用,其结果跟指针变量的结果是相同的; --对于操作地址而言:这里的结论是指针变量比普通变量操作地址方便无无数倍,这就是指针变量存在的意义 --普通变量当成指针:地址是4位的,32位机器上int类型的值也占4位,将y的地址赋值给c,将c强制转换为指针类型,来取指针指向的内容 */ int y = 10; int *b = &y; //定义 指针变量b存放y的地址 printf("b = %p\\n",b); //b变量内部存放的:y的地址 printf("*b = %d\\n",*b); //b的指向内容:y的值10 int c = (int)(&y); //定义 普通变量c存放y的地址 printf("c = %p\\n",c); //c变量内部存放的:y的地址 printf("*c = %d\\n", *(int *)c);//c的指向内容:y的值10
技术图片
/*7.0不允许向NULL、未知 地址拷贝内容*/ char *d = NULL; //strcpy(d,"111"); //报错
//7.1不允许向非法 地址拷贝内容 int z = 10; int *e = 1;//1是非法地址(1这个内存地址一般不是用来存放变量地址的) e = &z; printf("e=%d\\n", e); printf("*e=%d\\n", *e);//一般不这样使用
技术图片 /*8 void *类型的使用,需要转换为实际类型指针*/ int w = 10; void *f; f = &(int *)w; //转换为实际类型的指针(这里可以不转换为实际类型) printf(" f = %d\\n", f); printf("*f = %d\\n", *(int *)f); //转换为实际类型的指针(这里必须转换为实际类型)
技术图片
printf("\\n"); system("pause"); return 0;

 


 

以上是关于2.10一级指针初识的主要内容,如果未能解决你的问题,请参考以下文章

一级指针与二级指针

一级指针与二级指针

从一级指针到二级指针

一级指针,二级指针,指针数组,数组和指针

关于二级指针与一级指针相互转换的问题!

C 语言二级指针案例 ( 字符串切割 | 返回 自定义二级指针 作为结果 | 每个 一级指针 指向不同大小内存 | 精准分配每个 一级指针 指向的内存大小 )