1:指针定义格式:
格式:变量类型 *变量名用途:指针变量用于储存地址(only),也就是根据地址值,访问对应的存储空间。

注意。int *p 只能指向int类型的数据;

 例: 
int a = 20;
int *p;
p = &a;
//既p代表地址,*p代表值
//这时的* 代表指针变量p指向的存储空间,目的:改变p代表的地址指向的空间。

任何指针类型,都是占用8字节的存储空间。

指针的长度,是要根据指向的数据的地址,来取多少长度的数据,所以为防止取错数据需要和指向数据的类型一致。

注意:指针+1:p+1-->调到下一个地址,并非数学意义上的+1 具体取决于定义的类型,如:  int:+4,char:+1,double:+8;

指针数组:
int age[5]
int *p;
p = age;

数组赋给指针,可指针也具有数组的特性
p[i],

下面的上下情况一样的,
void change(int *array){ }

void changge(int array[]){ }

利用指针接收一个数组,指针变量arry指向数组的首元素。

3:指针与字符串

char name[] = "it";

char *name2 = "it"; //name2指向字符串的首字符,
由于其是char类型的数据,则只能指向第一个char类型。 printf("%c\n",*name2);
-->i
指针name2就是代表了字符串的首字符
printf("%s\n",name2);
-->it
而输出格式%s代表着,他会一致从第一个地址开始输出,知道遇到\0结束。
知道了指针的基本用法后,定义字符串的就有两种方式:
char name[] = "it";

char *name2 = "it"; 

name[1]='A';-->OK

*name='A',-->出错。

原因:指针定义的字符串,不可更改,

区别:数组:字符串变量(可更改)

     指针:字符串常量(不可更改)

char *n1="it";
char *n2="it"; printf("%p\n%p\n",n1,n2);//查看%p查看地址
二者的结果是一样的。指向同一个地址 **指针数组与指针字符串的区别 char name[]="itcast"; 特点:在变量区,内容可以更改 使用场合:字符串的内存需要经常修改 指针字符串 char *name="itcast"; 特点:这个字符串其实是常量字符串(在内存的常量区),里面的字符是不可更改。 使用场合,字符串的内存需要不需要修改,而且是经常用到。

3:指针数组 
char *name[5]={"jack","rose","jael"};
等价与二维字符串数组(字符串数组)
char name[3][5]={"jack","rose","jael"};

4:指向函数的指针 

  指针用来指向地址,而函数也有地址,指针也可以用来指

  我们知道数组名,代表数组的地址 ,同样,函数名代表函数地址。 

//无返回值,无参
void test(){ }
//带返回值
int sum(int a,int b){
return a+b;
}
//带返回值,同事参数也有指针格式
double min(double a,char *s,int a){} int main(){ //1,使用void
//(*p):固定格式
//左边的void:指针变量p指向的函数没有返回值
//右边的():代表p指向的函数没有形参 void (*p)(); p = test;//指针变量p指向test (*p)()://调用test函数,
或者p(); //2,带返回值int类型
int (*p)(int a,int b)//int (*p)(int,int)
p = sum;
int c = p(4,5); return 0;
} //3,double格式
double (*p)(double,char *,int);
p=min;
//或者
double (*p)(double,char *,int)=min;

作者:Darren

微博:@IT_攻城师

github:@Darren90

出处:http://www.cnblogs.com/fengtengfei/

c语言学习-指针探究的更多相关文章

  1. go语言学习--指针的理解

    Go 的原生数据类型可以分为基本类型和高级类型,基本类型主要包含 string, bool, int 及 float 系列,高级类型包含 struct,array/slice,map,chan, fu ...

  2. go语言学习--指针数组和数组指针

    数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数据的 ...

  3. Go语言学习——指针、new和make

    指针 Go语言中不存在指针操作,只需要记住两个符号: &:取地址 *:根据地址取值 vscode 打开多个标签页 settings.json中输入"workbench.editor. ...

  4. Go语言学习笔记九: 指针

    Go语言学习笔记九: 指针 指针的概念是当时学C语言时了解的.Go语言的指针感觉与C语言的没啥不同. 指针定义与使用 指针变量是保存内存地址的变量.其他变量保存的是数值,而指针变量保存的是内存地址.这 ...

  5. GO语言学习(十五)Go 语言指针

    Go 语言指针 Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务. 接下来让我们来一步步学习 Go 语言指针. 我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地 ...

  6. c语言学习笔记 - 指针和数组

    结合内存存储数据的机制,c语言里指针的出现和使用也就不奇怪了,如果先学了内存的一些知识,以及程序运行机制,到了c指针这块就会清晰很多. #include <stdio.h> int mai ...

  7. 大一C语言学习笔记(7)---指针篇--什么是指针?什么是指针变量?取地址符“&”的作用是什么?地址运算符“*”的作用是什么,怎么理解两者?

    "指针是C语言的灵魂"这句话一开始我没怎么明白,现在接触了指针,终于知道为什么这么说了,因为....难,真难:下面说一下我对这句话的见解: C语言拥有着其他语言所没有的特性---直 ...

  8. 12天学好C语言——记录我的C语言学习之路(Day 9)

    12天学好C语言--记录我的C语言学习之路 Day 9: 函数部分告一段落,但是我们并不是把函数完全放下,因为函数无处不在,我们今后的程序仍然会大量运用到函数 //转入指针部分的学习,了解指针是什么 ...

  9. C语言学习 第七次作业总结

    C语言学习 第七次作业总结 数组可以分为数组和多下标数组(在传统的国内C语言书本中,将其称为二/多维数组). 数组名称 在之前的课程中,大家应该都有印象,对于int a这样的定义,会为变量 a 声明一 ...

随机推荐

  1. [LUOGU] P3469 [POI2008]BLO-Blockade

    https://www.luogu.org/problemnew/show/P3469 求无向图分别删去每个点后不连通的点对数. 首先,对于任何一个点,它本身删了,就会和剩下的n-1个点不连通,点对是 ...

  2. 如何使用MySQL一个表中的字段更新另一个表中字段

    [本文出自:https://www.jb51.net/article/150323.htm] 这篇文章主要介绍了如何使用MySQL一个表中的字段更新另一个表中字段,需要的朋友可以参考下 1,修改1列 ...

  3. selenium 浏览器基础操作(Python)

    想要开始测试,首先要清楚测试什么浏览器.如何为浏览器安装驱动,前面已经聊过. 其次要清楚如何打开浏览器,这一点,在前面的代码中,也体现过,但是并未深究.下面就来聊一聊对浏览器操作的那些事儿. from ...

  4. VMware Workstation 14 UEFI启动

    1.新建虚拟机 完成后不要启动 修改虚拟机目录下的XXX.vmx文件 添加一行:firmware="efi" 然后启动UEFI安装系统.

  5. tarjan 学习记

    1.强连通分量是什么 强连通分量指的是部分点的集合如果能够互相到达(例如 1→3,3→2,2→1(有向图)这种,132每个点都能互相抵达) 或者说,有一个环,环上点的集合就是一个强连通分量 2.那怎么 ...

  6. js总结(一):javascript的类型:基本类型、对象和数组

    javascript 类型分为2种,一个是原始值,另一个是复杂值(对象). 一.原始值 5个原始值是:数字,字符,布尔,null,undefined. 9个原生的对象构造函数:Number Strin ...

  7. Android应用的权限配置和权限列表

    权限配置写在Mainifest.xml文件中: <?xml version="1.0" encoding="utf-8"?> <manifes ...

  8. [Vijos] SuperBrother打鼹鼠

    背景 SuperBrother在机房里闲着没事干(再对比一下他的NOIP,真是讽刺啊......),于是便无聊地开始玩“打鼹鼠”...... 描述 在这个“打鼹鼠”的游戏中,鼹鼠会不时地从洞中钻出来, ...

  9. Codeforces 659F Polycarp and Hay【BFS】

    有毒,自从上次选拔赛(哭哭)一个垃圾bfs写错之后,每次写bfs都要WA几发...好吧,其实也就这一次... 小白说的对,还是代码能力不足... 非常不足... 题目链接: http://codefo ...

  10. Unique Binary Search Trees(dp)

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...