黑马程序员-IOS基础之浅谈C语言指针
来源:互联网 发布:如何做采购数据分析 编辑:程序博客网 时间:2024/06/06 00:33
C语言-指针
大家都听过“谈虎色变“这个成语故事,咱们今天讲的虽然不是老虎,但一提到指针,大家可以能会害怕起来。在学习中,也经常听到同学们说C语言除了指针,其他的我都会。我觉得吧如果指针你不弄懂的话,C语言就不算会。那么接下来我们就来了解一下,什么是指针
大家先看一道题:
#include <stdio.h>void change(int);int main(){ int a = 90; change(a); printf("a=%d\n", a); return 0;} void change(int n){ n = 10;}那么,我为大家画一个图,就会理解
大家觉得,a打印出来的值是多少呢?可能以前学过其他编程语言的知道,a=90,值传递嘛,对吧。那如果我硬是要去修改a的数值呢?所以这个时候,我们就要用到指针。
接下来,我们言归正传
指针是C语言中最强大的工具之一,它也是最容易令人困惑的主题,所以一定要在开始时正确理解。
请看下面的语句:
int number = 5;
这条语句会分配一块内存来存储一个整数,使用number名称可以访问这个整数。值5存储在这个区域中。计算机用一个地址引用这个区域。存储这个数据的地址取决于所使用的计算机、操作系统和编译器。在源程序中,这个变量是固定不变的,但地址在不同的系统上是不同的。
可以存储地址的变量称为指针(pointers),存储在指针中的地址通常是另外一个变量,如下图,指针pnumber含有另外一个变量number的地址,变量number是一个值为99的整数变量。存储在pnumber中的地址是number第一个字节的地址。
指针的基本使用
变量类型 变量名;
格式:变量类型 *变量名;
指针变量只能存储地址
//定义了一个指针变量p;
int *p;//指针变量占8个字节
int a = 90;
p = &a;//指针变量p指向了变量a
*p =10;
注:指针的作用-能够根据一个地址值,访问对应的存储空间。
int *p;//int 就意味着指针变量p,只能指向整型变量
使用注意:
① 指针变量的数据类型要和它指向的变量数据类型一致
② 指针变量只能存储地址
③ 指针变量未经过初始化,不要拿来间接访问其他存储空间
demo:
int a = 10;
int *p;
p = &a;
//可以合并成
int *p = &a;
错误写法:
*p = &a;
正确写法:
p = &a;
定义指针变量时的*仅仅是一个象征,没有其它特殊含义
*p = 20;//这个时候的*的作用是,访问指向变量p指向的存储地址
指针和数组
数组名就是数组的地址,也是数组首元素的地址
demo:
int ages[5] = { 10, 9 ,8 67, 54};
int *p = &ages[0];
for(int i = 0; i < 5; i++)
{
printf("ages[%d] = %d\n",i,*(p+1));
}
//以上是利用指针间隔访问数组元素
printf("%d\n",p[2]);//p[2]是指针当作数组访问元素
指针与字符串
char name[] = "itcast";//放在栈中,可以修改 name[0] = 'T';
char *name2 = "itcast";//放在常量区,不可修改
char name[] = "itcast";// 'i' + 't' + 'c' + 'a' + 's' + 't' + '\0';
char *name2 = "itcast";//指针会指向字符串的首字符
注:各位技术大牛,如果发现有错误,请将指正,本人将及时更改。
--本文只代表个人见解,同时也只供C语言初学者学习,如有发现错误或者不解,请参考权威资料--
0 0
- 黑马程序员-IOS基础之浅谈C语言指针
- 黑马程序员IOS基础---C语言学习之指针
- 黑马程序员-iOS基础-C语言基础(五)指针
- 黑马程序员——IOS基础---C语言学习之复杂数据类型之指针
- 黑马程序员---iOS基础---C语言中的指针
- 黑马程序员——ios基础---C语言:字符串、指针
- 黑马程序员-IOS开发之--C语言基础一函数,字符串,指针,数组,
- 黑马程序员—IOS基础之C语言—数组与指针
- 黑马程序员——ios开发基础之C语言数组、指针与结构体
- 黑马程序员_iOS开发C语言基础之指针
- 黑马程序员——c语言基础之指针
- 黑马程序员-IOS基础之C语言基础语法
- 黑马程序员-C语言基础九:指针
- 黑马程序员---c语言基础---数组、指针
- 黑马程序员-----------C语言基础-----------指针(一)
- 黑马程序员-----------C语言基础-----------指针(二)
- 【黑马程序员】C语言基础-指针
- 黑马程序员--iOS--C基础(指针)
- How-to: transfer hbase data between two hadoop cluster
- 关于SharedPreference的使用
- Android - Launcher Icon Size
- javaWeb——图片验证
- mysql时间查询
- 黑马程序员-IOS基础之浅谈C语言指针
- android 视图getParent,getChildAt
- 【CF】【Amr and Chemistry】
- c#调用TeamViewer或AnyDesk实现远程控制
- IPSec VPN(一)
- IPSec VPN(二)
- android MediaRecorder 与 AudioRecord 差异
- spring 标签
- 策略模式 - 行为模式