笔记列表

    指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。

    要理解指针就要先理解计算机的内存。计算机内存会被划分为按顺序编号的内存单元。每个变量都是存储在内存单元中的,称之为地址。

    #include <stdio.h>

    int main ()
{
int var = ; /* 实际变量的声明 此时的 VAR 这个变量是存在某个地址的,地址对应某个内存单元,该单元中存储了数据20 */
int *ip; /* 指针变量的声明 定义了一个指针 即一个内存单元的地址变量 */ ip = &var; /* 在指针变量中存储 var 的地址 就是将地址值赋值给指针这个变量*/ /* 在指针变量中存储的地址 利用&符号直接输出了var所存储的数据的内存单元的地址*/
printf("Address of var variable: %p\n", &var ); /* 在指针变量中存储的地址 ip代表的是这个赋值到的地址的值 所以输出的是地址值 */
printf("Address stored in ip variable: %p\n", ip ); /* 使用指针访问值 *ip代表的是定义到这个内存单元之后,内存单元中所存储的数据的值也就是将20赋值给var中20这个值 */
printf("Value of *ip variable: %d\n", *ip ); return ;
} 指针是一个变量,所以可以使用任何合法的变量名。在大多数的操作系统上,程序不允许访问地址为 的内存,因为该内存是操作系统保留的。 然而,内存地址 有特别重要的意义,它表明该指针不指向一个可访问的内存位置。 但按照惯例,如果指针包含空值(零值),则假定它不指向任何东西。 所有指针在创建时都要初始化,如果不知道他指向什么就讲 赋值给他。必须初始化指针,没有被初始化的指针被称为失控指针(野指针)。 #include <stdio.h> int main ()
{
int *p = ;
int a ;
p = &a;
printf ("输入一个数字\n");
scanf ("%d",p);
printf("%d\n",*p);
} 实例定义了变量 a 和指针变量 p。p = &a;表示指针变量指向了变量 a,p 中存放的地址为 a 的地址 &a,*p 所指的是 p 中存放的地址 a 内存单元中的值。 /*按照偏移值访问函数形参内容实验*/
//二级指针
void Pros(char* a,int b,int e,char et)
{
char **p=&a;
//a==*p
printf("%p %p %p %p \n%p\n",&a,p,a,*p,&b);
printf("%s\n",*p);
p++;
printf("%d\n",*p);
p++;
printf("%d\n",*p);
p++;
printf("%c\n",*p);
return;
} //一级指针访问
void Test(char* a,int b)
{
char *p=(char*)&a;
//a!=*p;
//printf("%p %p %p %p\n",&a,p,a,*p);
//printf("%p\n",&b);
//得出结果一级指针自加+1 二级指针自按照元素内容大小自加
//printf("%d %p\n",*(++p),p);
//printf("%d %p\n",*(p+8),p+8);
//a=a[0]一个printf函数以'\0'结束
//此时p=&a把元素首地址给了p或者说a只记录一个元素首地址的地址
//同等汇编语句 a:db 'Hello' b:db '16'
//所以 p=&a != p=a ;
/*
char *a="Hello";
char *b=(char*)&a;
printf("%p %p %p %p",&a,b,a,&(a[0]));
*/
//printf("%c %p %p\n",*a,a,&(a[0]));
//printf("%c %p %p\n",*(a+1),a+1,&(a[1]));
printf("%c\n",*(*(char**)p));
//if p=a; *p=a;
p=a;
printf("%s",p);
return;
} int main()
{
//Pros("Hello",5,66666,'a');
Test("Hello",);
//指针转换问题
/*
char *a="Hello";//&a变量里面存储着a所指向的变量地址
//char **p=&a;
char *b=(char*)&a;
char **p=&a;
printf("%p %p %p %p\n",&a,b,a,*b);
printf("%p %c\n",&(*a),*(&(*(a+1))));
printf("%p %c\n",a,*a);//此时a->H,*a=H;
printf("%p %c\n",(*p),*(*p));
//p=&a,*p=a所指向的第一个元素的地址还需要一解才能访问正确数据
//所以1级指针需要解2次 所以进行强制转换
printf("%c \n",*(*(char**)b));
//原试解 现在b=&a,*b= &a->a所以如果此时想正确访问H必须在解
*/
return ;
} 参考地址 指针的一些复杂说明:
int p; -- 这是一个普通的整型变量
int *p; -- 首先从 p 处开始,先与*结合,所以说明 p 是一个指针, 然后再与 int 结合, 说明指针所指向的内容的类型为 int 型。所以 p 是一个返回整型数据的指针。
int p[] -- 首先从 p 处开始,先与[] 结合,说明 p 是一个数组, 然后与 int 结合, 说明数组里的元素是整型的, 所以 p 是一个由整型数据组成的数组。
int *p[]; -- 首先从 p 处开始, 先与 [] 结合, 因为其优先级比 * 高,所以 p 是一个数组, 然后再与 * 结合, 说明数组里的元素是指针类型, 然后再与 int 结合, 说明指针所指向的内容的类型是整型的, 所以 p 是一个由返回整型数据的指针所组成的数组。
int (*p)[]; -- 首先从 p 处开始, 先与 * 结合,说明 p 是一个指针然后再与 [] 结合(与"()"这步可以忽略,只是为了改变优先级), 说明指针所指向的内容是一个数组, 然后再与int 结合, 说明数组里的元素是整型的。所以 p 是一个指向由整型数据组成的数组的指针。
int **p; -- 首先从 p 开始, 先与 * 结合, 说是 p 是一个指针, 然后再与 * 结合, 说明指针所指向的元素是指针, 然后再与 int 结合, 说明该指针所指向的元素是整型数据。由于二级指针以及更高级的指针极少用在复杂的类型中, 所以后面更复杂的类型我们就不考虑多级指针了, 最多只考虑一级指针。
int p(int); -- 从 p 处起,先与 () 结合, 说明 p 是一个函数, 然后进入 () 里分析, 说明该函数有一个整型变量的参数, 然后再与外面的 int 结合, 说明函数的返回值是一个整型数据。
int (*p)(int); -- 从 p 处开始, 先与指针结合, 说明 p 是一个指针, 然后与()结合, 说明指针指向的是一个函数, 然后再与()里的 int 结合, 说明函数有一个int 型的参数, 再与最外层的 int 结合, 说明函数的返回类型是整型, 所以 p 是一个指向有一个整型参数且返回类型为整型的函数的指针。
int *(*p(int))[]; -- 可以先跳过, 不看这个类型, 过于复杂从 p 开始,先与 () 结合, 说明 p 是一个函数, 然后进入 () 里面, 与 int 结合, 说明函数有一个整型变量参数, 然后再与外面的 * 结合, 说明函数返回的是一个指针, 然后到最外面一层, 先与[]结合, 说明返回的指针指向的是一个数组, 然后再与 * 结合, 说明数组里的元素是指针, 然后再与 int 结合, 说明指针指向的内容是整型数据。所以 p 是一个参数为一个整数据且返回一个指向由整型指针变量组成的数组的指针变量的函数。

C笔记列表的更多相关文章

  1. CloudNotes之桌面客户端篇:增强的笔记列表

    今天,我发布了CloudNotes的一个更新版本:1.0.5484.36793.这个版本与1.0.5472.20097不同的是,它拥有增强的笔记列表,与之前单调的列表系统相比,新的笔记列表不仅可以显示 ...

  2. Python编程从入门到实践笔记——列表简介

    Python编程从入门到实践笔记——列表简介 #coding=utf-8 #列表——我的理解等于C语言和Java中的数组 bicycles = ["trek","cann ...

  3. 云笔记项目-笔记列表弹出"分享移动删除"子菜单

    业务需求: 笔记列表里还有一个按钮可以弹出子菜单,要求做到以下几点: (1)点击选中的笔记行的弹出按钮后,弹出子菜单,再次点击,子菜单收回. (2)选中其他笔记后,子菜单消失.效果如下图所示: 业务分 ...

  4. 02 - Unit05:加载笔记列表

    加载笔记列表 发送Ajax请求 绑定发送事件 获取参数: bookId 发送请求: /note/list.do 事件绑定 $(function(){ Ajax请求发送-->服务器处理--> ...

  5. 《python基础教程(第二版)》学习笔记 列表/元组(第2章)

    <python基础教程(第二版)>学习笔记 列表/元组(第2章)序列中的下标从0开始x='ABC' ==> x[0]='A', x[1]='B', x[2]='C'负数索引从右边开始 ...

  6. 【Redis】命令学习笔记——列表(list)+集合(set)+有序集合(sorted set)(17+15+20个超全字典版)

    本篇基于redis 4.0.11版本,学习列表(list)和集合(set)和有序集合(sorted set)相关命令. 列表按照插入顺序排序,可重复,可以添加一个元素到列表的头部(左边)或者尾部(右边 ...

  7. python2.7 学习笔记--列表的使用

    同其它编程语言一样,python也提供了丰富的数据结构,以方便数据的处理.本文介绍两种最基本的数据集合,列表和元组的使用. 一.列表使用介绍 可以理解为一个有序的序列.其使用方式举例如下: list= ...

  8. Python学习笔记——列表

    1.创建列表类型数据并给其赋值 >>> aList = [123,'abc',4.56,['inner','list'],7-9j] >>> aList [123, ...

  9. 《python核心编程》读书笔记——列表解析

    列表解析是列表类型的方法,这种方法结合了列表的方括弧.for循环.if语句. 用for把处理后的值放入列表: squared = [ x**2 for x in range(4) ] for i in ...

随机推荐

  1. python网络爬虫之使用scrapy爬取图片

    在前面的章节中都介绍了scrapy如何爬取网页数据,今天介绍下如何爬取图片. 下载图片需要用到ImagesPipeline这个类,首先介绍下工作流程: 1 首先需要在一个爬虫中,获取到图片的url并存 ...

  2. Impala 安装笔记2一hive和mysql安装

    l   安装hive,hive-metastore hive-server $ sudo yum install hive hive-metastore hive-server l   安装mysql ...

  3. [HAOI2016]找相同子串

    这题感觉有点坑啊. 题目还是不难想的,先对一个字符串建后缀自动机,然后拿另一个字符串在上面跑. 假设当前跑到了p点,匹配长度为len. 那么当前会对答案产生贡献的串是哪些呢? 显然当前会对p及p到根的 ...

  4. UVA1482 Playing With Stones —— SG博弈

    题目链接:https://vjudge.net/problem/UVA-1482 题意: 有n堆石子, 每堆石子有ai(ai<=1e18).两个人轮流取石子,要求每次只能从一堆石子中抽取不多于一 ...

  5. 千锋很火的SpringBoot实战开发教程视频

    springboot是什么? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员 ...

  6. Jquery Plugin模版

    1. [代码][JavaScript]代码 01// remember to change every instance of "pluginName" to the name o ...

  7. codeforces A. Black-and-White Cube 解题报告

    题目链接:http://codeforces.com/problemset/problem/323/A 题目意思:给定值 k ,需要输出 k 个 k 行 k 列的单位立方体各表示什么颜色(或者是黑色或 ...

  8. 使用XMLHttpRequest

    请求种类 通过XMLHttpRequest的请求可以通过同步和异步的方式获取数据,请求的种类在XMLHttpRequest的open()方法的第三三个可选参数async设置.如果这个参数是true或者 ...

  9. [YNOI 2016] 掉进兔子洞

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4939 [算法] 不难发现 , ansi = (r1 - l1 + 1) + (r2 ...

  10. python与c#的交互模块pythonnet

    今天总结一下python与c#的交互模块pythonnet,其实微软也是有相应的解释器的,就是Ironpython,可是毕竟Ironpython还有很多东西没有从python那边继承过来,所以有时候用 ...