c语言学习-指针探究
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语言学习-指针探究的更多相关文章
- go语言学习--指针的理解
Go 的原生数据类型可以分为基本类型和高级类型,基本类型主要包含 string, bool, int 及 float 系列,高级类型包含 struct,array/slice,map,chan, fu ...
- go语言学习--指针数组和数组指针
数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数据的 ...
- Go语言学习——指针、new和make
指针 Go语言中不存在指针操作,只需要记住两个符号: &:取地址 *:根据地址取值 vscode 打开多个标签页 settings.json中输入"workbench.editor. ...
- Go语言学习笔记九: 指针
Go语言学习笔记九: 指针 指针的概念是当时学C语言时了解的.Go语言的指针感觉与C语言的没啥不同. 指针定义与使用 指针变量是保存内存地址的变量.其他变量保存的是数值,而指针变量保存的是内存地址.这 ...
- GO语言学习(十五)Go 语言指针
Go 语言指针 Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务. 接下来让我们来一步步学习 Go 语言指针. 我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地 ...
- c语言学习笔记 - 指针和数组
结合内存存储数据的机制,c语言里指针的出现和使用也就不奇怪了,如果先学了内存的一些知识,以及程序运行机制,到了c指针这块就会清晰很多. #include <stdio.h> int mai ...
- 大一C语言学习笔记(7)---指针篇--什么是指针?什么是指针变量?取地址符“&”的作用是什么?地址运算符“*”的作用是什么,怎么理解两者?
"指针是C语言的灵魂"这句话一开始我没怎么明白,现在接触了指针,终于知道为什么这么说了,因为....难,真难:下面说一下我对这句话的见解: C语言拥有着其他语言所没有的特性---直 ...
- 12天学好C语言——记录我的C语言学习之路(Day 9)
12天学好C语言--记录我的C语言学习之路 Day 9: 函数部分告一段落,但是我们并不是把函数完全放下,因为函数无处不在,我们今后的程序仍然会大量运用到函数 //转入指针部分的学习,了解指针是什么 ...
- C语言学习 第七次作业总结
C语言学习 第七次作业总结 数组可以分为数组和多下标数组(在传统的国内C语言书本中,将其称为二/多维数组). 数组名称 在之前的课程中,大家应该都有印象,对于int a这样的定义,会为变量 a 声明一 ...
随机推荐
- 第一次:从今开始玩Linux,Ubuntu16.04
首先声明,我的文章不配图,就靠文字描述,然后自己体会,摸着石头体验吧! 从今天开始玩Linux,Ubuntu16.04据说是比较稳定的,界面友好,类似与Windows界面,也有Linux的命令终端,用 ...
- python基础知识04-散列类型运算优先级和逻辑运算
散列类型 1.集合 定义集合 se = {1,2,3,4} se = set()定义空集合 se = {1,3,5,7} se2 = {1,3,8,9} se & se2 {1,3} 交集 s ...
- Android发布apk后解决百度地图不显示的问题
今天在做Android apk发布时,发现发布后不能显示百度地图,结合网上的信息,及自己的实验,终于可以了.原来在Eclipse上直接run的是测试版本,而发布后是运行版本,两个版本的SHA1值不一样 ...
- sql中getdate()&convert的使用
1,sql中getdate()函数的使用: getdate()函数从SQL Server中返回当前的时间和日期,如: insert into T3(ID,AddTime) values(,GETDAT ...
- Mysql索引研究总结
闲来无事,研究了一下mysql索引,场景如下: 有一张MyISAM 类型的zt_action表,数据大约230W行,建两个索引,CREATE INDEX `read` ON zt_action(`re ...
- squid重定向(python 代码)
#!/usr/bin/python2.7 # coding: utf-8 import sys,os,stat import transport def redirect_url(line,concu ...
- [转]android 如何获取第三方app的sha1值
对于android 应用的sha1值和md5值的获取,如果是我们自己的应用,不论是获取测试的和正式的都是比较方便的.但是如何去获取别人开发的app的sha1和md5呢,并且我们只有apk有没有相关的文 ...
- 巴蜀4384 -- 【模拟试题】作诗(Poetize)
Description 神犇SJY虐完HEOI之后给傻×LYD出了一题:SHY是T国的公主,平时的一大爱好是作诗.由于时间紧迫,SHY作完诗之后还要虐OI,于是SHY找来一篇长度为N的文章,阅读M次, ...
- 【BZOJ2560】串珠子(状压DP,容斥原理)
题意: 铭铭有n个十分漂亮的珠子和若干根颜色不同的绳子.现在铭铭想用绳子把所有的珠子连接成一个整体.现在已知所有珠子互不相同,用整数1到n编号.对于第i个珠子和第j个珠子,可以选择不用绳子连接,或者在 ...
- ASP.NET程序开发中经典常用的三十三种代码实例[确实有用]
原文发布时间为:2008-11-10 -- 来源于本人的百度文章 [由搬家工具导入] ASP.NET程序开发中经典常用的三十三种代码实例:1. 打开新的窗口并传送参数: 传送参数:response.w ...