C语言入门篇--初识指针和指针变量
1.指针
指针就是地址(即一个数据)。
2.指针变量
2.1概念
(1)指针变量是变量,是变量在内存中就会开辟空间,会有自己对应的的地址,有自己的变量大小。
(2)指针变量里放的内容是地址(即指针)。
2.2指针变量大小
32位平台下,4字节。
48位平台下,8字节。
2.3指针变量理解
理解前一定先看看,地址相关知识。
#include <stdio.h> int main() { int a = 10; int *p = &a;//p为指针变量 printf("a的地址=%p,\n", &a); printf("p的地址=%p,\n", &p);//&p此处用的是p的内容,以十六进制(地址形式)打印。 printf("a的内容=%d,\n", a); printf("p的内容=%p,\n", p); printf("p指向的内容=%d,\n", *p);//对指针进行解引用 return 0; }
画图简单说明:
如果想深一层了解指针变量及其使用,可以看看变量的左值右值。
以上就是C语言入门篇--初识指针和指针变量的详细内容,更多关于C语言的文章资料请关注我们其它相关文章!
相关推荐
-
C语言 指针变量作为函数参数详解
在C语言中,函数的参数不仅可以是整数.小数.字符等具体的数据,还可以是指向它们的指针.用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着函数的结束而被销毁. 像数组.字符串.动态分配的内存等都是一系列数据的集合,没有办法通过一个参数全部传入函数内部,只能传递它们的指针,在函数内部通过指针来影响这些数据集合. 有的时候,对于整数.小数.字符等基本类型数据的操作也必须要借助指针,一个典型的例子就是交换两个变量的值. 有些初学者可能会使用
-
C语言中关于指针变量的坑
先看一个初始化带头结点单链表的例子,LNode是结点变量,LinkList是结点指针变量,等同于LNode* typedef struct LNode{ // 定义单链表节点类型 int data; struct LNode *next; }LNode,*LinkList; 例1.错误的方法:初始化带头结点的单链表 void InitList(LinkList L) { L = (LinkList)malloc(sizeof(LNode)); L->data = 3; L->next = NU
-
C语言入门篇--初识指针和指针变量
1.指针 指针就是地址(即一个数据). 2.指针变量 2.1概念 (1)指针变量是变量,是变量在内存中就会开辟空间,会有自己对应的的地址,有自己的变量大小. (2)指针变量里放的内容是地址(即指针). 2.2指针变量大小 32位平台下,4字节. 48位平台下,8字节. 2.3指针变量理解 理解前一定先看看,地址相关知识. #include <stdio.h> int main() { int a = 10; int *p = &a;//p为指针变量 printf("a的地址=
-
C语言入门篇--初识C语言及数据类型
目录 1. 什么是C语言? 2.第一个C程序&&知识点 2.1 头文件 2.2 main函数 2.3 函数调用 2.4 return 0; 3. 数据类型 3.1 C语言数据类型 3.2 为什么有这么多数据类型? 3.3 各个数据类型的大小 1. 什么是C语言? (1)C语言是面向过程.编译型的编程语言(与C++.Java等面向对象的编程语言有所不同,ps:C与C++是兼容的),经过编译后最终形成可执行程序(即exe,可直接运行). (2)C语言非常经典,一般会在底层开发使用,Linux.
-
C语言入门篇--初识结构体
目录 1.为什么要有结构体 2.结构体的定义 2.1结构体类型的定义 2.2定义结构体普通变量及访问 2.3定义结构体指针变量及访问 1.为什么要有结构体 (1)之前int.char等类型描述的结构体非常单一,只可描述一种类型. (2)数组也是描述同一类型的集合,只可描述一种类型. (3)而结构体使得C语言可以描述复杂类型,比如学生类型( 包含学生的名字.年龄.性别.电话号等信息). 结构体和数组的区别: 结构体:用来描述相同/不同数据元素类型的集合. 数组:用来描述具有相同数据元素类型的集合.
-
C语言入门篇--充分理解操作符
目录 1.算术操作符 1.1除法运算 1.2取模运算 2.移位操作符 相关知识 1.移位运算是站在二进制角度移位的 2.左移右移,原始变量值不发生变化除非给原始变量赋值 3.整数移位运算不能整除时,只保留整数部分 4.C语言中的移位运算符 5.移位分为算术移左移.算术移右移和逻辑左移.逻辑右移 3.位操作符 3.1按位与& 3.2按位或 | 3.3异或 ^ 4.赋值操作符 5.单目操作符 5.1 逻辑反操作 ! 5.2 负值 - 正值 + 5.3 取地址 & 5.4 取反 ~ 5.5 前置
-
C语言入门篇--变量的左值和右值
目录 1.普通变量 2.指针变量 2.1初步理解 2.2深入理解 在看此块内容前可以先看看内存及地址相关内容,更容易理解. 1.普通变量 一个变量是有三个属性: 1.变量的空间. 2.变量的内容. 3.变量的地址. 空间即若干字节,内容即空间里放了什么,地址即变量对应的空间地址. #include <stdio.h> int main() { int a = 10;//定义变量a,开辟4个字节的空间. a = 20;//见下述文字解释 int b = a;//见下述文字解释 return 0;
-
C语言入门篇--理解地址及内存
1.内存 内存是电脑中一个重要的存储器,计算机中所有的程序都在内存中运行的,内存的性能对计算机的影响非常大. 内存是计算机与CPU进行沟通的桥梁,计算机会把程序由硬盘加载到内存中后再去使用. 为了有效的使用内存,把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节. 为了能够有效的访问即快速找到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址. 一般运行一个程序主要涉及计算机的三个设备:内存.CPU.硬盘. 1.1内存和CPU的关系 CPU是负责数据的运算和处理,内
-
C语言入门篇--字符串的基本理论及应用
目录 字符串 1.常见字符串的情况 2.'\0'的证明 3.字符串的用法 3.1 用数组 3.1.1 给数组直接赋字符串 3.1.2 以单个字符赋入数组 3.2 用指针 4.字符串可直接输出 字符串 (1)由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串.eg:"hello world!" (2)字符串在结束时默认有 转义字符'\0',不作为内容,作为结束标志. (3)C语言无字符串类型,需借助 char*,char[
-
C语言入门篇--关键字static详解
目录 1.修饰局部变量 1.1作用 1.2举例 (1)不加static (2)加static (3)静态局部变量的初始化只会进行一次 2.修饰全局变量 2.1作用 2.2举例 (1)不加static (2)加static 3.修饰函数 3.1作用 3.2举例 (1)不加static (2)加static 1.修饰局部变量 1.1作用 ststic修饰局部变量,会改变局部变量的生命周期,不改变作用域: 生命周期:和全局变量一样具有全局性,但在内存中的位置没有改变,还在在静态存储区中. 作用域:作用
-
C语言入门篇--函数及数组用法
目录 函数 1.函数的作用 2.函数的构成 (1)返回值 (2)函数名 (3)形参列表 (4)函数体 数组 1.定义数组 1.1不进行初始化 1.2进行初始化 1.3不给定数组元素个数 2.数组的经典用法 2.1求数组大小.元素大小.元素个数 2.2遍历 面向过程编程:C语言是面向过程的语言:在C语言中,把大部分的功能以一个个函数呈现,就称之为面向过程编程: 函数 是面向过程编程最关键的语法结构. 1.函数的作用 1.从工程上讲,函数可以让我们的代码更具有结构性,让代码更好看. 2.函数可以提升
-
C语言入门篇--注释,关键字typedef及转义字符详解
目录 注释 1.注释意义 2.两种注释风格 2.1 C语言注释风格 2.2 C++注释风格 关键字typedef 1.注意 2.用法 语法结构 转义字符 1.转义字符及其含义 2.字面 转 特殊 3.特殊 转 字面 注释 1.注释意义 (1)代码中有不需要的代码可以直接删除,也可以注释掉. (2)有些代码比较难懂可以注释一下. 2.两种注释风格 2.1 C语言注释风格 /*xxxxxx*/ 一次可以注释一行或多行,但不能嵌套注释. eg: #include <stdio.h> int main
随机推荐
- 二维码的生成细节和原理
- jQuery实现列表自动循环滚动鼠标悬停时停止滚动
- Angularjs的Controller间通信机制实例分析
- JS基于面向对象实现的拖拽功能示例
- 前端框架Vue.js构建大型应用浅析
- 微软将在HEC上发布Windows 2003 64-bit
- 看到一个JS正则的题
- javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
- 使用SNK密钥文件保护你的DLL和代码不被反编译教程
- 简述php环境搭建与配置
- C#正则过滤HTML标签并保留指定标签的方法
- Android 7.0中拍照和图片裁剪适配的问题详解
- php + nginx项目中的权限详解
- linux网络相关命令汇总(6)
- IIS W3C日志记录字段和HTTP状态代码的说明
- Ruby设计模式编程中对外观模式的应用实例分析
- JS实现移动端判断上拉和下滑功能
- xml 封装与解析(javascript和C#中)
- 使用remalloc的注意事项说明(必看篇)
- android使用include调用内部组件的方法