外贸网

  • 首页
  • C语言——什么时候用指针 c语言指针怎么理解,什么时候会用到指针,要注意哪些方面

    作者:媒体   更新日期:2024.06.02
    1.什么时候都可以用指针,因为用指针的效率比用变量高。
    2.当一个函数要返回1个以上的运算结果时,就必须用指针,因为一个函数只能返回一个值,更多的得用指针“带回”。
    3.操作数组时,用指针不仅方便得多而且代码时效很高。
    4.操作文件时,不用指针寸步难行。
    5.利用指针可以简化函数调用的书写过程,使源代码易于阅读。
    ……不一而论。

    调用函数传数组值的时候,数组太长的话....你懂的,括号里,写死你a[0],a[1],a[2]....孩子慢慢传吧
    你还不如传数组起始的指针,就是告诉函数“在某个位置有一堆东东!”,而不是一个一个告诉他。

    就好像把指针当做门牌号码。房子大小不定,房子里住的人多少不定,但是门牌号码长度一定。
    PS:告诉人家门牌号码很容易引狼入室...也就是...指针玩脱了,内存溢出的

    建议你先看程序,边理解边学

    建议你不应该纠结于什么时候用指针。而应该致力于深入理解、学习: 指针的本质是什么

    c语言指针怎么理解,什么时候会用到指针,要注意哪些方面

    cpu自己有运算器和寄存器,通过总线与存储器件相连,在执行运算时,
    需要将数据冲存储器件上面将参与运算的数据读入,运算完成后再送出到
    存储区。那么cpu读入时需要访问存储器件的某个单元,需要指定这个单元
    的编号,我们管这个编号叫存储地址。
    比如:int a[10],*p; p=&a[3];a就是一个拥有10个整型数据的数据区
    的首地址,变量p是存放地址的,称为指针型变量,赋值时需要取相应存储
    区的地址,p=&a[3];就是取数组a的第4个单元的地址给p,那么p就拿到了
    这个单元的地址,*p=5;就相当于a[3]=5;的操作,p++;后p指针就指向a[4]。
    在操作大块数据时,一般记录首地址(数组指针),然后根据首地址再加
    上偏移量来访问整个数据,在你程序中写a[3]时,计算机就会取a数组对应
    的首地址再加3个整型偏移量来访问相应数据。用指针p访问a数组的好处
    是,不用每次计算a加多少偏移访问数据,而是使p指向某数据后可以p++
    或p--来访问前一个或后一个数据。
    注意:
    1.指针存放地址用,不是存储实际数据的,它是用来找数的,在
    程序中要注意这点,往往出问题的是,指针还没有赋值就用来操作,或
    用指针来存放数据,如:int *p=15,s[10]={ 0,15,{0} };的
    p指针赋值有问题,这样计算机会把15当成地址存放到p变量中,以后用
    *p访问得到的数据就不是你想要的数据了。(应该类似:p=s+1; *p=15;)
    2.指针访问数据区一般需要程序来控制不要越界,比如定义了10个单元
    的数据区,你不能让指针超出这10个单元的范围,否则得到的数据就是
    不靠谱的。
    3.指针的定义只是开设了可以访问数据区或数组的变量,数据区和数组
    需要你的程序另行开设,然后把数据区或数组的某个单元的地址赋值给
    指针变量,不要认定义了能访问数组的指针,数组就定义好了。
    4.指针存放的地址最好不要用来与其他地址比较,除非你能确认地址比
    较的结果肯定是你想要的。
    5.举例来说,int a[10],*p=a;中a和p都是指针(地址),但a和p是不同的
    在编译器眼中,a是一个数据区的首地址,是一个标记,你程序中使用a
    时,编译器会知道用数据区的首地址来替换操作,而p是你自己程序开
    设的变量,可以在程序中操作比如p++; p=a;等,但作为记号的a就不能
    在程序中操作了,如a++; a=p;就是错的了。
    6.子程序如果参数是指针型的,这个参数由子程序开设的指针型临时
    变量存储,这个临时变量可以进行操作,但不会返回给调用者的指针型
    变量。
    如:int a[10],*p; int f(int *s) { s++; } main() { p=a; f(p); }
    s再怎么加减都不会影响p。

    看需要什么类型的变量,就定义成什么类型的
    比如需要一个整数,当然用int类型了
    如果需要一个小数,就用float或double,要看需要的小数的精度有多大,前者是4个字节的,所以精度相对没那么高,后者是8个字节的,精度肯定高一点
    如果需要一个字符,那么就用char吧,char是一个字节的

    C语言到底什么时候用指针什么时候用变量
    答:1. 需要改变实参的时候, 只能用指针.2. 传递大型结构并且"只读"其元素的时候,因为大型结构通过值传递, 需要拷贝其每个元素, 这样效率太低.3. 需要遍历数组或频繁引用其元素时, 这样效率比使用下标高.4. 动态分配空间时, 必须使用指针.5. 传递数组时, 必须使用指针.6. 函数返回指针时, 比如fopen ...

    c语言什么时候使用数组,什么时候使用指针?
    答:任何时候都可以使用数组,使用指针。定义时,通常只有字符指针,和字符数组指针直接定义。用来表示字符串或字符串数组。其他一般定义数组。操作时用指针或数组。其他指针,多半用在参数传递,数据结构内部(不确定需要内存的大小,或者链表,二叉树等链式结构)的时候。还有一种是有些函数参数就是指针,这时定...

    c语言的指针什么时候用
    答:简单来说就是当你想灵活地访问地址空间,并在不需要时将其释放时,就可以考虑用指针。使用指针可以灵活地对地址空间进行操作,但是带来方便的同时也经常出现灾难性的软件问题。使用时要特别注意,任何时间使用指针都要保证指向正确的地址空间,它的内容至少在一定范围内是“可预测的”。

    c语言指针怎么理解,什么时候会用到指针,要注意哪些方面
    答:1.指针存放地址用,不是存储实际数据的,它是用来找数的,在 程序中要注意这点,往往出问题的是,指针还没有赋值就用来操作,或 用指针来存放数据,如:int *p=15,s[10]={ 0,15,{0} };的 p指针赋值有问题,这样计算机会把15当成地址存放到p变量中,以后用 p访问得到的数据就不是你想要的...

    c语言中,为什么要用“指针”这个词?
    答:在c、c++中,表达式中*()与[]操作完全相同,其实所有x[n]在编译时会被自动替换成*(x+n)。也就是这里的B显然是对的,其效果等同于x[3]。由于x只有10个元素,也就是只有x[0]~x[9],所以对于一切下标为10的操作都是非法的,也就是A和C排除。D的值是pt指针后移三个位置的值,根据第一...

    c语言中指针的意义是什么 什么时候使用
    答:指针直接通过目标的地址操作目标内容,效率很高,特别是在操作自定义的复杂目标时,不仅书写方便且便于阅读。指针是语言自身需要的“附加变量”,所以它可用于语言自身的所有合法目标(基本变量、数组、函数、结构、联合、指针等,以及它们的各类被修饰的特殊目标)。所以只要目标是合法的,它的指针就是存在的,...

    c语言中,函数的形参什么时候必须是指针
    答:情况1 需要读入的数据是比较大的数据,使用指针作为参数可以节省堆栈 比如 定义1个结构体 typedef struct test { char buffer1[10000];char buffer2[10000];//后面还有一大堆成员 }test_ts;void Func1(test_ts t1){ //函数体是对t1成员进行Read处理 } void Func2(test_ts *t1){ //函数体是...

    C语言指针有什么用?
    答:表示成员选择(指针),选择结构体的成员变量。1、结构:运算符 -> 是指向结构体成员运算符,结合方向为自左向右。2、用法:对象指针->成员名。举例说明如下:

    C语言指针的作用有哪些?
    答:指针的用途非常广泛,比如如果你想通过函数改变一个变量的值,就得用指针而不能用值传递。还有在很多时候变量,特别是对象的数据量实在太大,程序员就会用指针来做形参,只需要传递一个地址就行,大大提高了效率。简单地说指针就是指向变量和对象的地址。基本说明:1、在计算机中,所有的数据都是存放在...

    c语言指针用法?
    答:1、使用场景 使用指针时,必须将它指向一个变量的地址或者为它分配空间方能使用,如下所示:include<stdio.h> include <stdlib.h> int main(int argc, char const *argv[]){ int a[5]={0,1,2,3,4};int *b,*d;int c=2;int *e=a; //e指向a数组首地址 //*b=2; 无法直接初始...