存放变量地址的变量

int a = 1;
int *p;
p = &a;
 
在64位系统中,占用8个字节

  • 直接引用
  • 间接引用
*p : 指针指向的变量的值
不要使用未初始化的指针
 
 
1.使用指针实现改变实参值
2.函数返回两个值, 使用指针参数可以改变值的方法
3.不同类型的指针的区别,区分指向的值的长度
 
A.指针与一维数组
1.利用指针读取数组元素
2.利用指针遍历数组元素
指针加减可以操作指针的指向地址
p++, p+1, p+2
根据指针类型,跳转规定长度的地址
 
ps:数组名即数组位地址,不允许使用++自加,因为它是常量,不允许赋值,但是可以进行加减供其他地方使用。
 
使用指针还是数组存储字符串
需要改变字符串:数组
不需要改变字符串:指针 char *p = “abc”
 
数组下标与指针加减
int a[5];
int *p = a;  或 int *p = &a[0];
a[2] ===> p+2;
 
3.指针数组
char *names[5] = {“jack”, “Lucy”, “Sam”, “Tom”, “Cc”};
 
 
 
 
B.指针与函数
1.指向函数的指针
函数名代表函数地址
定义一个指向函数的指针
sample1:
     //Define a pointer pointting to a function
int (*p) (int, int);
p = sum;
//Call sum by p indirectly
p(,);
sample2:
    void (*p)();

    p = test;

    p();//or (*p)();
 
可以把函数当做参数传送
 int test(int a, int b, (*p)(int int)
{
return p(a, b);
}
 
函数名代表函数的首地址,类似数组
 
 
 
2.返回指针的函数
 char *test()
{
return “hello”;
}
 
C.指针与指针
指针类型的作用
例如指针加减p+1 p+2 p-1,自增自减p++, p—,需要根据指针类型确定内存偏移位置
int **p;//指向整型指针的指针
 
空指针 void *
p = NULL;
 
 
D.指针与字符串
char name[] = “Simon”; <==字符串变量,数据在栈中
输出效果等价于
char *name = “Simon”; <== 字符串常量,数据在常量区
例如
char *name1 = “Simon”;
char *name2 = “Simon”;
name1 和 name2 指向的实际是同一个常量
    char *name1 = "Tom";
    char *name2 = "Tom";
    printf("name1 addr = %p, name2 addr = %p\n", name1, name2);
out:
name1 addr = 0x104d05f6d, name2 addr = 0x104d05f6d
 
指针也能像数组一样访问其中的字符,例如name1[2];
 
 
区别:
使用sizeof的时候,对数组能够得到数组所占用的字节数,而指针得到的是指针占用的字节
字符串数组可以修改字符串,字符串指针不能,只能改变指向 

[C语言 - 4] 指针的更多相关文章

  1. 浅谈c语言的指针

    对于非计算机专业的同学,c语言的指针往往就是老师的一句“指针不考“就带过了.c语言的指针号称是c语言的灵魂,是c语言中最精妙的部分. 指针本质上也是变量,也就是一段内存,只是他的特殊之处是他存储的数据 ...

  2. C#委托与C语言函数指针及函数指针数组

    C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...

  3. C语言二重指针与malloc

    (内容主要源于网上,只是加入了些自己的剖析) 假设有一个二重指针: char **p; 同时有一个指针数组 char *name[4]; 如何引用p呢? 首先我们有程序代码如下 #include &l ...

  4. C语言函数指针基础

    本文写的非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针的语法和基础.如果你不讨厌事无巨细,请尽情阅读吧. 函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具.本文将从C ...

  5. 为什么C/C++语言使用指针

    这是参加面试时,面试官问的一道开放性题目. 问题是:为什么C/C++语言使用指针? 这个问题一问出来,直接被面试官秒杀了,面试官大神,你怎么不按套路出牌啊? 说好的malloc和new的区别呢?说好的 ...

  6. C语言的指针变量

    C语言的指针变量 在C语言中,变量是固定范围的存储空间,它存储的是赋给他的值, 比如: ; /* 这里是定义一个整型变量a,并把12这个值存储在a的地址空间上 这个地址空间是系统随机分配的,对用户是透 ...

  7. Android For JNI(五)——C语言多级指针,结构体,联合体,枚举,自定义类型

    Android For JNI(五)--C语言多级指针,结构体,联合体,枚举,自定义类型 我们的C已经渐渐的步入正轨了,基础过去之后,就是我们的NDK和JNI实战了 一.多级指针 指针的概念我们在前面 ...

  8. “对外部(局部)变量的访问”是C语言函数指针的最大弱点

    1.“对外部(局部)变量的访问”是C语言函数指针的最大弱点 . #include <stdio.h> #include <stdlib.h> /* 结构体定义 */ struc ...

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

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

  10. C语言中指针占据内存空间问题

    以前一直有个疑问,指向不同类型的指针到底占用的内存空间是多大呢? 这个问题我多次问过老师,老师的答案是"指向不同类型的指针占据的内存空间大小不同",我一直很之一这个答案,今天我就做 ...

随机推荐

  1. Web内容管理系统 Magnolia 启程-挖掘优良的架构(3)

    Author and Public instances 第一个关键观念:instance-实例.每一个项目都必须至少有一个Author实例和至少一个Public实例.下面将告诉你为什么: 基本概念:J ...

  2. 对mysql经常使用语句的详细总结

    下面总结的知识点全是经常用的,全都是干货,好好收藏吧. /* 启动mysql */net start mysql /* 连接与断开服务器 */mysql -h 地址 -p 端口 -u 用户名 -p 密 ...

  3. 1709. Penguin-Avia(并查集)

    1709 简单题 并查集找下就行 #include <iostream> #include<cstdio> #include<cstring> #include&l ...

  4. LA 2797 (平面直线图PLSG) Monster Trap

    题意: 平面上有n条线段,一次给出这n条线段的两个端点的坐标.问怪兽能否从坐标原点逃到无穷远处.(两直线最多有一个交点,且没有三线共交点的情况) 分析: 首先说明一下线段的规范相交:就是交点唯一而且在 ...

  5. angular js 指令的数据传递 及作用域数据绑定

    <div my-directive my-url="http://google.com" my-link-text="Click me to go to Googl ...

  6. TCP/IP详解学习笔记(1)-基本概念

    为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样 ...

  7. MySQL基础之第6章 创建、修改和删除表 .

    6.1.创建表 6.1.1.创建表的语法形式 CREATE TABLE 表名 ( 属性名 数据类型 [完整性约束条件],属性名 数据类型 [完整性约束条件],...... 属性名 数据类型); 完整性 ...

  8. T-SQL查询进阶-10分钟理解游标

    转:http://www.cnblogs.com/CareySon/archive/2011/11/01/2231381.html 概述 游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合的 ...

  9. JS实现连接方式的菜单

    <html> <head><meta http-equiv="Content-Language" content="zh-cn"& ...

  10. Generate Parentheses java实现

    Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes ...