首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

8.2 C语言指针变量

指针变量的基类型用来指定此指针变量可以指向的变量的类型。 2、指针变量前面的“*”表示该变量的类型为指针变量。...4、指向整型数据的指针类型表示为“int”,读作“指向int的指针”或简称“int指针”。 5、指针变量只能存放地址(指针),不要将一个整数赋给一个指针变量。...02怎样引用指针变量 1、给指针变量赋值。如:p=&a;指针变量p的值是变量a的地址,p指向a。 2、引用指针变量指向的变量。...5、*指针运算符,*p代表指针变量p指向的对象。 03指针变量作为函数参数 1、函数的参数不仅可以是整型、浮点型、字符型等数据,还可以是指针类型,它的作用是将一个变量的地址传送到另一个函数。...C语言 | 函数实现输出I love you 更多案例可以go公众号:C语言入门到精通

1.3K2625

C语言|图解指针变量

= NULL; 图解: 1.1 己址和己空间 指针变量也是一个变量,对应一块内存空间,对应一个内存地址,指针名就是己址。...1.2 己值、他址、他空间 指针变量的值就是其指向的空间的地址,指向的地址的空间大小就是指针变量指向类型的大小。...1.3 声明与初始化 当声明一个指针变量,没有初始化时,指针变量只获得了其自身的内存空间,而其指向还没有确定,此时指针变量解引用做左值是非法操作。...a+3是指相对于地址a,偏移sizeof(int)个字节 *(b+3) = 'x'; // b+3是指相对于地址b,偏移sizeof(char)个字节 printf("%d, %c\...); printf("%d\n",a[2][0]); // 5 } 以下代码可以用以下图示辅助理解: ref:Kyle Loudon《 Mastering Algorithms with C

1.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言指针变量

    一、指针变量 /* 1、定义 普通变量: 数据类型 变量名称 指针变量: 数据类型 * 变量名称; 2、指针变量是什么类型,那么将来就只能保存什么类型变量的地址...变量被const修饰时,就复制了其值出来放到常量表(由系统维护) 但是每次取常量时,它是从常量表找到以前的值,而不是再次读内存。...*/ 四、指针和字符串的关系,变量内存栈区和常量区区别 测试字符数组,指向字符数组的指针,和指向字符串的指针的区别; 字符数组和指针存储的字符串在内存的存储位置:即栈区存储和常量区存储的区别 //1...cp = cs; // printf("%s", *cp); //这样写会挂掉,因为*cp取出的数组第一个字符 printf("%s, %c, %c, %c, %c\n", cp, *...说明:字符数组存在内存的栈区,常量字符串存在内存的常量区 /* 如果通过数组来保存字符串,那么字符串变量可以修改,存在内存栈,当作用域结束时自动释放该变量; 如果通过指针来保存字符串

    2K30

    C语言中只读指针变量与只读变量指针

    只读指针变量和只读变量指针看着好像有点绕; 只读指针变量意思是只读指针变量 只读变量指针:只读变量指针 本文的主角是const关键字 如果我们开发的时候,定义了某个变量,不想让别人修改时,就可以使用...首先定义两个整型变量 int a = 10; int b = 20; 普通的指针变量 先来看一下普通的指针变量: 我们定义一个普通的int类型的变量a,并初始化为10; 定义一个int类型的指针变量...那么打印出来p的值,就是a的值,10; //普通的指针变量 int *p = &a; printf("%d \n",*p);//10 //指向数值222 *p...也可以修改指针变量的地址; 只读指针变量 //只读指针变量 //这是一个const指针指向的int类型的变量 //const指针指向的整型变量 int *const cp1 = &a; *cp1...= 2;//值可以修改 *cp1 = &b; //cp1 = &b; //指针不能修改 值可以修改; 地址不能修改; 只读变量指针 //一个const指针指向的一个const整型的变量

    2.5K20

    C语言 | 指向结构体变量指针变量

    例40:C语言实现通过指向结构体变量指针变量变量输出结构体变量的信息。...解题思路:在主函数声明了struct student类型,然后定义了一个struct student类型的变量s_1,又定义了一个指针变量p,它指向一个struct student类型的对象,将结构体变量...s_1的起始地址赋给指针变量p,也就是使p指向s_1,然后对s_1的各个成员赋值。...    struct student *p;//定义结构体指针变量    p=&s_1;//将s_1得地址赋给指针变量    s_1.num=10010;//赋值    strcpy(s_1.name,...思考两个问题,怎么对结构体变量成员赋值?怎么通过指向结构体变量指针访问结构体变量成员? C语言 | 通过指向结构体变量指针变量输出结构体变量的信息 更多案例可以go公众号:C语言入门到精通

    1.8K2218

    C语言 | 改变指针变量的值

    例35:C语言编程实现改变指针变量的值。 解题思路: 指针p的值是可以变化的,printf函数输出字符串时,从指针变量p当时所指向的元素开始,逐个输出各个字符,直到遇‘\0’为止。...源代码演示: #include//头文件  int main()//主函数  {   char *p="I love C program language";//定义指针变量且赋值 ...  p=p+7;//指针变量p指向字符串的第8位    printf("%s",p);//输出    return 0;//主函数返回值为0  } 编译运行结果如下: C program language...读者应该特别注意: char *p="I love C program language"; 数组名虽然代表地址,但是它是常量,值不能改变。...p=p+7; 虽然是+7,但是在C语言中,下标是从0开始的。 C语言 | 改变指针变量的值 更多案例可以go公众号:C语言入门到精通

    3.4K2419

    C语言笔记】指针变量的运算

    前言 指针变量也是可以进行运算的,如指针变量对其自身加上某个整数或减去某个整数,这在内存上体现为:相对这个指针向后偏移多少个单位或向前偏移了多少个单位,这里的单位与指针变量的类型有关。...include int main(void) { int a = 10, *pa = &a; float b = 6.6, *pb = &b; char c...= 'a', *pc = &c; double d = 2.14e9, *pd = &d; //最初的值 printf("pa0=%d, pb0=%d, pc0=%d, pd0...从本示例程序,还可以看出:连续定义的变量在内存的存储有可能是紧挨着的,有可能是分散着的。...以上就是关于C语言指针变量运算的一些总结:指针变量与整数相加相减是相对该指针指向的地址向后向前偏移多少个单位。这里的单位不能认为总是1。

    1.3K20

    C语言指针

    前言 承接同系列文章C语言指针(上),本文将进一步介绍指针的相关知识。...一、字符指针 char* 1.用法(两种) 第一种用法是将字符型变量ch的地址放到指针pc; 第二种用法本质是把字符串 hello world....我们已经知道的指针变量类型: 整形指针: int * pint;   即,能够指向整形数据的指针。...但由于篇幅原因,在这一篇文章仍不能将所有的知识全部总结完,因此后续还是会不断补充关于C语言中的指针的内容,希望大家继续支持。...本文的作者也只是一个正在学习C语言等编程知识的萌新,若这篇文章中有哪些不正确的内容,请在评论区向作者指出(也可以私信作者),欢迎大佬们指点,也欢迎其他正在学习C语言的萌新和作者进行交流。

    73620

    C++定义指针变量 | 使用指针变量

    C++指针变量的定义 C++规定所有变量在使用前必须先定义,即指定其类型,在编译时按变量类型分配存储空间,对指针 变量必须将它定义为指针类型。...即*不是指针变量名的一部分,在定义变量时在变量名前加一个*表示该变量指针变量。 在C++怎样使一个指针变量指向另一个变量呢?...只需要把被指向的变量的地址赋给指针变量即可: point_num1=&i; 在C++,一般编译系统为每一个指针变量分配4个字节的存储单元,用来存放变量的地址, 在定义指针变量时要注意:  不能用一个整数给一个指针变量赋初值...在定义指针变量时必须指定基类型。 经典案例:C++定义指针变量。...C++定义指针变量 | 使用指针变量 更多案例可以go公众号:C语言入门到精通

    2.6K2420

    【重拾C语言】七、指针(一)指针变量指针操作、指向指针指针

    return 0; } C语言中的指针定义符是*,它用于声明一个指针变量。...在C语言中,间接引用运算符使用*符号。通过将间接引用运算符应用于指针变量,可以获取该指针指向的实际值。例如,如果ptr是一个指向整数的指针变量,那么*ptr将给出该指针指向的整数的值。...在C语言中,可以使用NULL宏来表示空指针。...NULL是C指针类型的一个特殊值,在系统文件stdio.h定义,其值为0,称为“空” 表示指针变量的值为空,不指向任何变量或函数 NULL值属于所有指针类型。...0; } 7.3 指向指针指针 C语言支持指向指针指针,也称为多级指针

    24310

    C语言中“指针”和“指针变量”的区别是什么

    比较严格的说法是这样的: 系统为每一个内存单元分配一个地址值,C/C++把这个地址值称为“指针”。如有int i=5;,存放变量i的内存单元的编号(地址)&i被称为指针。...“指针变量”则是存放前述“地址值”的变量,也可以表述为,“指针变量”是存放变量所占内存空间“首地址”的变量(因为一个变量通常要占用连续的多个字节空间)。...比如在int i=5;后有一句int *p=&i;,就把i的指针&i赋给了int *型指针变量p,也就是说p存入着&i。所以说指针变量是存放指针变量。...有一个事实值得注意,那就是有不少资料和教科书并没有如上区分,而是认为“指针指针变量的简称”,如对int *p=&i;的解释是:声明一个int *型指针p,并用变量i的地址初始化;而严格说应该是声明一个...int *型指针变量p才对。

    59830

    C 语言指针数据类型 ( 指针类型变量 | 使用 * 操作内存 )

    文章目录 一、指针类型变量 二、使用 * 操作内存 一、指针类型变量 ---- 指针 也是 变量 , 也占用内存空间 , 可以用于保存 内存地址 ; 测试 指针 变量占用的内存空间大小 : 定义一个 int...a = 8; // 声明指针类型变量 int *p = 888; // 声明二级指针类型变量 int **p2 = 8888; // 打印 变量 a , b...: 声明 指针 时 , * 表示声明的变量指针变量 ; 使用指针 : 使用 指针 时 , * 表示操作 指针 指向的 内存空间 的数据 ; 操作内存 : *p 相当于 通过 指针地址 ( p 变量值...是给 内存 赋值 ; 内存取值 : *p 放在等号右边 , 是从 内存 取值 ; * 符号相当于一把钥匙 , 通过该符号查找一个地址对应的内存 , 可以 访问 ( 读取 / 写出 ) 该内存存储的数据...从内存取值 int b = *p; // 打印相关结果 printf("*p = %d, b = %d\n", *p, b); return 0; } 执行结果 :

    63510

    C语言指针(野指针)

    指针:就是指针指向的位置是不可知(随机性,初始化,不正确,没有明确限制),指针变量在定义时如果未初始化,其值是随机的,指针变量的值是别的变量的地址,意味着指针指向了一个地址是不确定的变量,此时去解引用就是去访问了一个不确定的地址...未初始化的指针变量就是“野”指针,它指向的是无效的地址。 有些书上说:“如果指针变量不初始化,那么它可能指向内存的任何一个存储单元,这样就会很危险。...:当你指针不知道怎么赋值,就赋值给一个空指针 NULL Null是在计算具有保留的值,用于指示指针不引用有效对象。...程序通常使用空指针来表示条件,例如未知长度列表的结尾或未执行某些操作; 这种空指针的使用可以与可空类型和选项类型的Nothing值进行比较。...空指针不应与未初始化的指针混淆:保证空指针与指向有效对象的任何指针进行比较。但是,根据语言和实现,未初始化的指针可能没有任何此类保证。它可能与其他有效指针相等; 或者它可能比较等于空指针

    2.6K20

    C语言中“悬空指针”和“野指针”究竟是什么意思

    文章来自网络:C语言编程 各位,提起C语言我们很自然就会想到指针二字,没错,作为C的核心和灵魂,它的地位咱们就不再赘述了,今天我们想跟大家讲的是指针的两个特有名词:“悬空指针”和“野指针”。...下面这段C语言代码是一个例子,请看: void *p = malloc(size); assert(p); free(p); // 现在 p 是“悬空指针C语言中的“悬空指针”会引发不可预知的错误...所以在实际的C语言程序开发,为了避免出现“悬空指针”引发不可预知的错误,在释放内存之后,常常会将指针 p 赋值为 NULL: void *p = malloc(size); assert(p); free...C语言中的“野指针”危害性甚至比“悬空指针”还要严重。...在实际的C语言程序开发,定义指针时,一般都要尽量避免“野指针”的出现(赋初值): void *p = NULL; void *data = malloc(size); 好了,关于“悬空指针”和“野指针

    51610

    C语言——指针

    指针c语言中的一个重要概念,也是C语言的一个重要的特色,正确而灵活地运用它,可以使程序简洁,紧凑,高效,每一个学习和使用c语言的人,都应当深入了解地学习和掌握指针,可以说,不掌握指针就是没有掌握C的精华也可以说...指针C语言的灵魂(doge) 由于通过地址能找到所需的变量单元,可以说,地址指向变量单元,打个比方,一个房间的门口挂了一个房间号2008,这个2008就是房间的地址,或者说,2008"指向"...意思是通过它能找到以它为地址的内存单元!...下面来看一段代码: 这里我们可以发现p跟p+1相差1 这里c是多少呢 ?...16进制的C的10进制是12,所以q+1和q相差4  p是整型指针相当于sizeof(int)=4 q是字符型指针相当于sizeof(char)=1; 以上就是我归纳指针的一些小结 如果能帮助友友们 -

    2.3K20

    C - 指针C语言指针的总结

    C语言指针的总结 1. 变量 不同类型的变量在内存占据不同的字节空间。 内存存储数据的最小基本单位是字节,每一个字节都有一个内存地址,这个地址是一个十六进制的数。...下面通过一张图可以更直观的理解内存的地址 ? 内存的地址演示图 2. 指针 指针C语言的灵魂。指针变量占据8个字节。 变量在内存的存储。 变量的值:存储在变量的数据,叫做变量的值。...指针变量既然是一个变量就要在内存占用字节空间 指针变量在内存占据多少字节数?...指针为什么要分类型? 多级指针 一个指针变量存储的是一个一级指针的地址,那么它就是二级指针,一个指针变量存储的是一个二级指针的地址,那么它就是三级指针。...指针变量后面可以使用括号,在括弧写上下标来访问数据。

    4.2K81

    C语言指针

    二、指针的定义 三、指针的初始化 四、指针运算符 五、指针的用途举例 六、关于指针的疑问 指针C语言中非常重要的数据类型,如果你说C语言中除了指针,其他你都学得很好,那你干脆说没学过C语言。...1.我们已经知道,"直接引用"是直接通过变量名来读写变量 2.C语言中还有一种"间接引用"的方式(以变量a为例):首先将变量a的地址存放在另一个变量,比如存放在变量b,然后通过变量b来间接引用变量a...,第6行的*p的意思是:根据p值(即变量a的地址)访问对应的存储空间,并取出存储的内容(即取出变量a的值),赋值给value 3.使用注意 在指针变量没有指向确定地址之前,不要对它所指的内容赋值。...我们可以简要分析一下这个过程: * 在第20行,将变量a、b的值分别传递给了swap函数的两个形参v1、v2 ? * 在第8行,将v1的值赋值给了temp ?...这个要根据内存来分析 根据变量的定义顺序,这些变量在内存中大致如下图排布: 其中,指针变量p和int类型变量i各占2个字节,char类型的c占一个字节,p指向c,因此p值就是c的地址 ?

    3.3K60

    C语言_初识C语言指针

    存储地址一般用 十六进制数 表示,而每一个 存储器地址 又存放着一组二进制(或十六进制)表示的数,通常称为该地址的内容。...为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址 编号 = 地址 = 指针 指针变量 = 变量 = 存放地址的变量 ---- 一、指针 … 一个内存单元多大比较合适.../0 32位机器,上面有32根地址线 2的32次方个字节的空间 - - - 4,294,967,296 Byte — 4GB ---- 通过pa里存放的a的地址找到a ---- 三、指针变量的大小...指针变量是用来存放地址的 32位机器上:地址是32个二进制位,这个地址要存储的话要4个字节,所以在32位机器上,指针变量的大小是4个字节。...64位机器上:地址是64个二进制位,这个地址要存储的话要8个字节,所以在64位机器上,指针变量的大小是8个字节。

    18630
    领券