黑马程序员--C语言基础--指针

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

/*

1.指针的定义格式:

数据类型 *指针变量名

2.指针的赋值:

指针变量内存储的是指针所指向变量的地址

指针变量名=&... 或者 指针变量名 =数组名

注意:定义的时候 * 仅代表这是在定义一个指针变量,没有其他的意义

*/

 1 int main()
 2 {
 3
 4 //定义指针变量
 5 int *p;
 6
 7 //定义整形变量
 8 int a=10;
 9
10 //给指针变量赋值,给的是变量a的地址符
11 p=&a;
12
13 //获取指针变量的值
14  printf("%d",*p);
15
16  }

3.指针操作数组时,因为数组是属于引用类型的,所以将数组名直接赋值给指针,就相当于把数组的地址给了指针

 1 int main()
 2 {
 3     //定义char*型的指针变量
 4     char *p;
 5   // 定义字符数组
 6     char arr[]={‘a‘,‘b‘,‘c‘,‘\0‘};
 7   //给指针变量赋值 也可以 p =arr[0]
 8     p=arr;
 9
10     //利用指针访问数组
11
12     printf("%c",*(p+1)); //代表获取数组从0+1位置点元素
13     printf("%c",*p); //访问的是数组的第0个元素
14
15     return 0;
16 }

4.指针指向函数

  定义要指向函数的指针: 函数的返回值 (*指针变量名)(参数类型,...)

  给指针变量赋值:指针变量名=函数名称

  调用指针(相当于调用函数):指针变量名(参数值,...)或者(*指针变量名)(参数值,...)

  作用:这个指针就是用来间接调用函数的

 1 #include <stdio.h>
 2
 3 //声明函数
 4 int test(int,int);
 5
 6 int main()
 7 {
 8    //定义指向函数的指针
 9     int (*p)(int,int);
10     //给指针赋值
11     p=test;
12     //利用指针调用函数,并接受返回值
13     int sum=  p(1,2);
14     int sum2= (*p)(10,20);
15     //输出
16     printf("sum=%d,sum2=%d",sum,sum2);
17
18     return 0;
19 }
20 //定义函数
21 int test(int a,int b)
22 {
23     return a+b;
24 }

6.指向指针的指针

  定义:数据类型 **指针变量名

  赋值:指针变量名=&变量

 1 int main()
 2 {
 3
 4     int  a=10;
 5     //定义指针,指向a
 6     int *p=&a;
 7     //定义指向指针的指针
 8     int **p2;
 9     //给p2赋值
10     p2=&p;
11
12     //利用指针指向a改变a的值
13     *p=20;
14     printf("p改变:a=%d\n",a);
15     //利用指向指针的指针改变a的值
16     *(*p2)=30; //*p2  就代表指向指针p ,然后再加上 * 就相当于利用指针p去访问a
17     printf("p2改变:a=%d",a);
18     return 0;
19 }
时间: 2024-12-04 13:58:30

黑马程序员--C语言基础--指针的相关文章

黑马程序员---C语言基础---指针

------iOS培训.Java培训.Android培训, iOS学习型技术博客,期待与您交流------ C语言基础---指针 学习C语言,指针是必须重视的,本人觉得,正是因为指针才使得C语言如此的强大与妙不可言(当然还有其丰富的数据类型与运算符). 指针的作用,说的大白话一点就是:有了指针,就能找到你. 就好比全球定位系统,只要你在地球上,把精确的地址给我,我就能定位到你. 那么什么是指针变量呢?就是存放地址值的变量,该变量只能存放内存地址值,定义如下: 类型标识符   *指针变量名; 先看

黑马程序员——C语言基础---指针

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一. 指针变量的定义 1. 定义的格式 l 类名标识符  *指针变量名; l int *p; 2. 先定义后赋值 l 简单取值 int a = 10; int *p; p = &a; printf(“%d”, *p); l 简单改值 *p = 9; 3. 定义的同时赋值 int a = 10; int *p = &a; 4. 实现修改实参 5. 注意点 l int *p;   p = 1

黑马程序员-C语言基础:指针类型与指针和数组、字符串的关系

//指针变量就是用来存储地址的,只能存储地址 格式:  int  *p;  这个p为指针变量:指针变量占8个字节 类型是用来说明这个指针指向的类型: 比如上边的int代表这个指针变量会指向int类型的存储空间: int *p = &a;//这样一句可以写,此时的*只是一个标志,表示这个*只是表示p是个指针: *p = &a;//这样写就错了:此时*p表示取p指向的空间的值: 指针疑问:指针既然都占据8个字节,那么为什么要划分类型, 是因为当用*p指针取值或者赋值的时候,知道该取几个字节,比

黑马程序员-c语言基础:各种数据类型的输出占位符

c语言中的输出操作相对java来说是比较麻烦的,每种数据类型的输出都有各自的占位符: 下面是各种数据类型的输出占位符: short/int : %d int a = 1; printf("这个整数是:%d", a); long: %ld; (long 是int得修饰,不能算是一种单独的数据类型,只是比int多了四个字节的存储空间) long long: %lld char : %c float/double : %f  float默认是6位小数输出:可以在%f中控制:例如:%.2f:输

黑马程序员-C语言基础:数组和字符串

数组:数组的定义注意点 数组初始化正确写法: int args[5] = {1,23,32,4,5}; int args[5] = {12,23}; int args[5] = {[3]=23, [4]=13};//这种写法也可以,直接给其中角标为3和4的赋值 int args[] = {12,23,32};//中括号中没写数组大小,在大括号中一定要写具体数值 int args['A'] = {2,34,5}; 错误写法: int args[];//这样编译器不知道给你开辟多大的内存空间 int

黑马程序员_01_Java语言基础部分(数据类型与表达式、流程控制语句、数组与方法)

------- android培训.java培训.期待与您交流! ---------- Java语言主要由5中符号组成 标识符:数字.字母.美元符.下划线(注意不能数字开头) 关键字:goto和const保留了它们,但是Java没有使用. 运算符:注意运算符优先级(左结合和右结合要注意) 分隔符:注意+号可以分割字符串. 注释:三种注释. 数据类型与变量 常量: 整型 浮点型 字符:注意后面跟三个八进制(\ddd)和 四位unicode码(\u8bf7) (不区分大小写) 字符串 布尔型 变量:

黑马程序员---C语言基础---结构体

------iOS培训.Java培训.Android培训, iOS学习型技术博客,期待与您交流------ C语言基础---结构体 一.什么是结构体 介绍结构体之前,我想先简单介绍下数组.我想大家对数组都再熟悉不过了,顾名思义,数组就是将一些数据(元素)组合在一起,作为一个整体.使用数组需要注意的是这些元素必须是相同类型.而结构体和数组类似,也是将一些数据组合在一起作为一个整体,但是这些元素可以是不同类型.可以这么理解:结构体是更加灵活的数组,因为它允许元素是不同的类型. 实际生活中,如果我们要

黑马程序员——c语言基础语法(二)

指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值.未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机.指针变量的赋值只能赋予地址,决不能赋予任何其它数据,否则将引起错误.在C语言中,变量的地址是由编译系统分配的,对用户完全透明,用户不知道变量的具体地址. 两个有关的运算符: &:取地址运算符. *:指针运算符(或称“间接访问” 运算符). C语言中提供了地址运算符&来表示变量的地址.其一般形式为:&变量名: 如&a表示变量a的地址,&b表示

黑马程序员— C语言基础之内存剖析

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 在学习C语言基础知识时,老师对内存的分析很重视,几乎每个知识点都会帮我们分析内存存储情况,透过内存的分析也让我们对C语言有了更深的一些了解,C语言跟其他计算机语言相比,对内存的分析和要求更高,下面我们一起来了解和学习一下C语言的内存剖析,是我个人的在学习中的一些总结,如果问题或者不到位的地方也希望大家能够一起交流和指正. 第一讲  进制 进制是一种计数的方式,数值的表示形式,一般我们C语言主要

黑马程序员——C语言——基础语法

首先学的是C语言的基础语法,主要分为关键字.标示符.注释.数据.常量.变量. 一.关键字 1   关键字是指在C语言中系统默认的有特殊意义的字符 2   关键字全部是小写字母表示,总共32个关键字(主函数[main]中int .return),如下: auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned