C语言 --- 初级指针

1.内存的访问:直接访问,间接访问.

    直接访问:int a = 0;直接对a赋值.选一个内存地址,让他存20这个数.

                 a += 10;

                a变量本身就代表这个内存单元,代表那个单元格,四个字节.通过变量堆a赋值或者取值,实现对内存单元的访问.

    间接访问: 通过内存单元的编号(地址)以及数据所占字节数访问内存中的数据.用指针实现

                 (电脑内存的计算:2G内存  0~2的31次方-1字节,每个字节有8位bit由01组成);

2. 指针:就是内存地址.内存地址简称为指针.

     &a 是指a的地址.printf("%p",&a);分配的地址是由系统分配的.打印的&a是第一个字节所占的地址.

3. 指针变量: 存储内存地址的变量

            int a = 6;a是整型变量;

            如果a存的是0x7fff5fbff86c,a就是指针变量;

4. 定义指针变量

    int a = 10;

    int *p = &a;(p是变量,p存的是一个地址.)此时*仅仅起到标识作用,告诉编译器p是一个存放地址的变量.有些人这样写(int *)p = &a;

5. 使用*访问变量的内容; printf("%d",*p);p是一个地址,p前加一个*代表要把地址里面的值取出来.到底如何取?p代表首地址,取多少字节取决于定义指针时的类型.此时就是用指针间接访问了地址的内容.此时是读取此内存内容.

6. *操作符是对p里面的内容进行操作.  *p = 40;此时a = 40;

7. 指针的定义,赋值.int *p = NULL;NULL恒等于0,是内存的第一个地址.

                           int a = 5;

                            p = &a; 赋值

8. 指针的类型

    int *p = &a;整型指针p指的是a的首地址,然后连续取该型占的字节.

9. int *:整型指针占8个字节(64位操作系统),4个字节(32位操作系统).

             sizeof(p)

时间: 2024-12-16 07:00:00

C语言 --- 初级指针的相关文章

C语言中指针和数组

C语言数组与指针的那些事儿 在C语言中,要说到哪一部分最难搞,首当其冲就是指针,指针永远是个让人又爱又恨的东西,用好了可以事半功倍,用不好,就会有改不完的bug和通不完的宵.但是程序员一般都有一种迷之自信,总认为自己是天选之人,明知山有虎,偏向虎山行,直到最后用C的人都要被指针虐一遍. 指针 首先,明确一个概念,指针是什么,一旦提到这个老生常谈且富有争议性的话题,那真是1000个人有1000种看法. 在国内的很多教材中,给出的定义一般就是"指针就是地址",从初步理解指针的角度来说,这种

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

C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用的时候通过指针访问这个函数. 在C语言中函数指针的申明如下: //可以理解为申明一个指着变量 Func ,它的类型是 返回Type(可以为 void )类型的参数,接收 (Type one,Type two,...)类型的//参数(可以不接受参数). Type *Func(Type one,Type

C语言的指针变量

C语言的指针变量 在C语言中,变量是固定范围的存储空间,它存储的是赋给他的值, 比如: int a = 12; /* 这里是定义一个整型变量a,并把12这个值存储在a的地址空间上 这个地址空间是系统随机分配的,对用户是透明的不用关心 */ 指针变量存储的是变量的地址, 比如: int a = 12 , *b; b = &a; /*如上,定义了一个整型变量a并赋值12,一个整型指针变量b 然后 用 & 取值运算符 取到变量a的地址空间值,存储到指针变量b中 此时变量b中存储的是变量a中的地址

黑 马 程 序 员_视频学习总结<c语言>----03 指针

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 一.什么是指针? 用来存放变量地址的变量,就称为"指针变量". 二.指针的定义 一般形式:类名标识符  *指针变量名; int *p; float *q; "*"是一个说明符,用来说明这个变量是个指针变量,是不能省略的,但它不属于变量名的一部分 前面的类型标识符表示指针变量所指向的变量的类型,而且只能指向这种类型的

C语言的指针移位问题

先贴代码 #include <stdio.h> int main(void) { double a[]={1.1,2.2,3.3}; unsigned int b,c,d; b=&a[0]+1;c=&a[1];d=&a[2]; printf("diff -- %d", c-b); return 0; } 执行结果是 diff -- 0 这是32位的代码,所以可以用unsigned int类型来储存地址位. 由于a[0]是double类型,所以&

c语言函数指针实例

如果使用typedef 是这样的 //可以把一个小写字母变成大写 //char (*pFun)(char); typedef char (*PTRFUN)(char); PTRFUN pFun; char glFun(char a){ return a & 223;} void print(int a,PTRFUN call){ cout<<call(a)<<endl;}void main() { pFun = glFun; print('a',pFun);} 如果不使用t

go语言之指针

数组 Arrays 数组是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值.在初始化后长度是固定的,无法修改其长度.当作为方法的入参传入时将复制一份数组而不是引用同一指针.数组的长度也是其类型的一部分,通过内置函数len(array)获取其长度. 在开始前先了解指针与地址: Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务,变量是一种使用方便的占位符,用于引用计算机内存地址,Go 语言的取地址符是 &,放到一个变量前使

IOS开发系列--C语言之指针

概览 指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移越来越模糊,感觉指针难以掌握,本文通过简单的例子试图将指针解释清楚,今天的重点有几个方面: 什么是指针 数组和指针 函数指针 什么是指针 存放变量地址的变量我们称之为"指针变量",简单的说变量p中存储的是变量a的地址,那么p就可以称为是指针变量,或者说p指向a.当我们访问a变量的时候其实是程序先根据a取得a对应的地址,再到这个地址对应的存储空间中拿到a的值,这种方式我们称之为"直接

c语言函数指针

1 void PrePrintOrTree(struct TreeNode* root, void (*WorkPrint)(double)){ 2     struct TreeNode* index = root; 3     if (root == NULL){ 4         return; 5     } 6     PrePrintOrTree(root->lchild,WorkPrint); 7     (*WorkPrint)(root->value); 8     Pre