一、指针

定义指针变量

指针指向的数据类型 *指针变量名称;

例: int *p;

*作用:

1、在定义变量的时候 * 是一个类型说明符,说明定义的这个变量是一个指针变量

2、在不是定义变量的时候 *是一个操作符,访问指针所指向存储空间

&作用:

&作为单目操作符,放在变量的前面,是取出变量的地址

* 与 & 他们是一对反操作

指针初始化

int age = 10;

int *p = &age;//定义指针同时初始化

三、指针与字符串

1、使用字符数组来保存的字符串是保存栈里的,保存栈里面东西是可读可写,所有我们可以改变里面的字符

当把一个字符串常量赋值一个字符数组的时候,那么它会把字符串常量中的没有字符都放到字符数组里面

2、使用字符指针来保存字符串,它保存的是字符串常量地址,常量区是只读的,所以我们不可以修改字符串中的字符

1、多个指针变量可以指向同一个地址

2、指针的指向是可以改变的

注意点:

1、指针没有初始化里面是一个垃圾值,这时候我们这是一个野指针,

如果操作一个野指针

1、可能会导致程序崩溃

2、访问你不该访问数据

所以指针必须初始化才可以访问其所指向存储区域

2、指针变量不可以直接赋值一个整形常量,

因为我们不知道这个整形常量是内存那块地址

二、指针与数组

数组不是一个指针

数组像一个指针,我们可以通过访问指针所指向的存储空间的方式去访问数组中元素

使用数组名与使用指向数组的指针都可以访问数组中的元素

char nums[] = {1,2,3,4,5};// 定义一个数组

printf("nums = %p\n",nums);// 输出数组的地址

printf("%d\n",nums[1]);

char *p  = nums;// 把数组的地址给变量p,数组名就是数组的地址

printf("%d\n",*p);

// 多种输出方式

printf("nums[4] = %d\n",nums[4]);

printf("nums[4] = %d\n",*(nums+4));

printf("nums[4] = %d\n",p[4]);

printf("nums[4] = %d\n",*(p + 4));

printf("nums[4] = %d\n",4[p]);

三、指针与字符串

1、使用字符数组来保存的字符串是保存栈里的,保存栈里面东西是可读可写,所有我们可以改变里面的字符

当把一个字符串常量赋值一个字符数组的时候,那么它会把字符串常量中的每个字符都放到字符数组里面

2、使用字符指针来保存字符串,它保存的是字符串常量地址,常量区是只读的,所以我们不可以修改字符串中的字符

C语言指针(一)的更多相关文章

  1. C语言指针转换为intptr_t类型

    1.前言 今天在看代码时,发现将之一个指针赋值给一个intptr_t类型的变量.由于之前没有见过intptr_t这样数据类型,凭感觉认为intptr_t是int类型的指针.感觉很奇怪,为何要将一个指针 ...

  2. [转]C语言指针学习经验总结浅谈

    指针是C语言的难点和重点,但指针也是C语言的灵魂 . 这篇C语言指针学习经验总结主要是我入职以来学习C指针过程中的点滴记录.文档里面就不重复书上说得很清楚的概念性东西,只把一些说得不清楚或理解起来比较 ...

  3. 不可或缺 Windows Native (7) - C 语言: 指针

    [源码下载] 不可或缺 Windows Native (7) - C 语言: 指针 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 指针 示例cPointer.h #i ...

  4. C语言指针学习

    C语言学过好久了,对于其中的指针却没有非常明确的认识,趁着有机会来好好学习一下,总结一下学过的知识,知识来自C语言指针详解一文 一:指针的概念 指针是一个特殊的变量,里面存储的数值是内存里的一个地址. ...

  5. (转载)c语言指针学习

    前言 近期俄罗斯的陨石.四月的血月.五月北京的飞雪以及天朝各种血腥和混乱,给人一种不详的预感.佛祖说的末法时期,五浊恶世 ,十恶之世,人再无心法约束,道德沦丧,和现在正好吻合.尤其是在天朝,空气,水, ...

  6. 关于C语言指针的问题

    在学习关于C语言指针的时候,发现这样一个问题,代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h&g ...

  7. C语言指针类型 强制转换

    关于C语言指针类型 强制转换  引用一篇文章: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个 ...

  8. C语言指针和数组知识总结(上)

    C语言指针和数组知识总结(上) 一.指针的基础 1.C语言中,变量的值能够通过指针来改变,打印指针的语句符号可以是:  %08x 2.指针的本质 指针的本质就是变量,那么既然是变量,那么一定会分配地址 ...

  9. C语言指针操作

    欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/pointer-manipulation. ...

  10. C语言指针声明探秘

    C语言指针声明探秘

随机推荐

  1. 3.25考试(hnoi难度)----神奇的一日游

    T1怕老婆 有一天hzy9819,来到了一座大城市拥有了属于他自己的一双滑板鞋.但是他还是不满足想要拥有属于自己的一栋楼,他来到了一条宽敞的大道上,一个一个记录着这些楼的层数以方便自己选择. hzy9 ...

  2. JS学习笔记(一) 概述

    参考资料: 1. http://www.w3school.com.cn/js/ 2. http://www.liaoxuefeng.com/wiki/001434446689867b27157e896 ...

  3. shell script的连接符是逗号,不是英文的句号

    举个例子: gawk 'BEGIN{ var[ var[ var[ var[ asort(var,test) for(i in test) print ] }' 这时候敲回车就能输出 Index: - ...

  4. Android图形显示之硬件抽象层Gralloc(hal 转)

    原文  http://blog.csdn.net/yangwen123/article/details/12192401 FrameBuffer驱动程序分析 文中介绍了Linux系统下的显示驱动框架, ...

  5. hdu3060Area2(任意多边形相交面积)

    链接 多边形的面积求解是通过选取一个点(通常为原点或者多边形的第一个点)和其它边组成的三角形的有向面积. 对于两个多边形的相交面积就可以通过把多边形分解为三角形,求出三角形的有向面积递加.三角形为凸多 ...

  6. MonkeyRunner学习(3)脚本编辑

    除了cmd直接操作手机,也可以编辑好脚本后,运行脚本,一次操作多个脚本命令 a) 新建py格式脚本,如iReader.py b) 编辑脚本 #导入模块 from com.android.monkeyr ...

  7. Android开发把项目打包成apk

    做完一个Android项目之后,如何才能把项目发布到Internet上供别人使用呢?我们需要将自己的程序打包成Android安装包文件--APK(Android Package),其后缀名为" ...

  8. Java 获取各时区时间,获取当前时间到格林威治时间1970年01月01日00时00分00秒的秒数

    格林威治时间即UTC/GMT时间,1970年01月01日00时00分00秒(即UTC+8的北京时间1970年01月01日08时00分00秒)计算代码如下: /** * 获取指定时间到格林威治时间的秒数 ...

  9. 转:Jeff Atwood倾情推荐——程序员必读之书

    Jeff Atwood倾情推荐——程序员必读之书 英文版:<Code Complete 2>中文版:<代码大全(第二版)>作者:Steve McConnell译者:金戈  汤凌 ...

  10. 转!sqlServer2000 表连接查询

    在查询多个表时,我们经常会用“连接查询”.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据 ...