指针变量复习

1,指针变量存放的是4个字节,如果变量的所占字节超过四个字节给出代码:

 1 #include <stdio.h>
 2 int main(int argc, char *argv[])
 3 {
 4     double arr[]={1,2,3,4,5};
 5     double * p=&arr[0];
 6     printf("%p\n",p);
 7     p=&arr[1];
 8     printf("%p\n",p);
 9
10             return 0;
11 }

2,如果使用一个没有返回值得函数修改指针变量的地址,代码如下:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 void p_add(double **q);
 4 int main(int argc, char *argv[])
 5 {
 6     double arr[]={1,2,3,4,5};
 7     double * p=&arr[0];
 8     printf("%p\n",p);
 9     p_add(& p);
10     printf("%p\n",p);
11             return 0;
12 }
13 void p_add(double **q)
14 {
15     *q=(double *)malloc(sizeof(double *));
16 }

3,指针和数组的关系,知道数组的首地址和长度,那么可以用指针来表示这个数组了

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 void output( int*q,int len);
 4 int main(int argc, char *argv[])
 5 {
 6     int arr[]={1,2,3,4,5};
 7     int len=sizeof(arr)/sizeof(arr[1]);//一定是个正整数
 8     output(arr,len) ;
 9     return 0;
10 }
11 void output(int *q,int len)
12 {
13     int id;//c 语言需要先声明
14     for(id=0;id<len ;id++ )
15     {
16         printf("%d\t",*(q+id));
17         //printf("%d\t",q[id]);
18     }
19     printf("\n");
20 }

其实指针和数组并非一个概念,他们之间是有区别的,比如第7行,数组名arr作为数组首地址等同于&arr[0],但是sizeof(arr)跟sizeof(arr[0])和sizeof(q) 是两回事,以后会再说

未完待续……

时间: 2024-07-29 18:16:03

指针变量复习的相关文章

黑马程序员---C基础9【字符串的输入输出】【字符串相关函数】【指针】【指针变量初始】【二级指针】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [字符串的输入输出] 1.字符串输出: %s-------从给定的地址开始输出字符直到遇到\0停止: printf("%s\n",&a[3]);  printf("%s\n",a); char a[]="hellowo\0rd!"; 2.字符串输入: 从键盘上接收一个字符串,保存在以a为首地址的字符数组中 scanf("%s&

C言语指针变量作为函数参数

在C言语中,函数的参数不只可所以整数.小数.字符等详细的数据,还可所以指向它们的指针.用指针变量作函数参数可以将函数内部的地址传递到函数外部,使得在函数外部可以操作函数内部的数据,而且这些数据不会跟着函数的完毕而被烧毁.像数组.字符串.静态分派的内存等多是一系列数据的聚集,没有方法经过一个参数全体传入函数外部,只能传递它们的指针,在函数外部经过指针来影响这些数据聚集.有的时分,关于整数.小数.字符等根本类型数据的操作也必需要借助指针,一个典型的例子就是交流两个变量的值.有些初学者能够会运用下面的

指针与指针变量

一.指针与指针地址 1. 地址 计算机的内存被划分成一个个存储单元,这些存储单元按一定的规则编号,这个编号就是存储单元的地址.每个存储单元大小为一个字节,每个单元的地址是唯一的. 2. 变量的地址 在程序中所有的变量都要分配相应的存储单元,不同数据类型所需要的存储空间的大小不同.系统分配给变量的内存空间的起始单元单元地址称为该变量的地址. 例如: int a; 假设分配给a的4个存储单元编号为0x300.0x301.0x302.0x303,如图,则0x303称为变量a的地址. 3. 指针 变量在

C提高_day03_两个辅助指针变量挖字符串(强化4)

#define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <stdio.h> //两个辅助指针变量挖字符串, 的第三种内存模型 //指针做函数参数 void FreeMem(char **myp,int count) //释放内存函数 { int i=0; if(myp == NULL) { return; } for(i=0;i<count;i++) { if

指针的含义——指针变量、指针的指针、指针使用的注意

指针其实很容易理解的,其他并不是大家想象的那么神奇,那么难. 一.指针的含义:指针其实就是一个变量,它所存放的不是数据,而是数据在内存中地址.当然指针也可以存放函数(方法)的地址,后面会讲到的.声明指针的关键符是*号,指向地址的关键符是&. 二.指针变量: 例如1:#include <stdio.h> int main {  int a =10;   //第一一个变量a,赋值为10 int *p = &a;   //p就是一个指针变量,所指向的就是变量a的地址 printf(&

C语言的指针变量

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

4.6指针变量作参数

Q:编写一个函数,该函数被主函数调用,通过该函数实现向主函数中定义的数组输入数据. 注意:函数的调用是在内存的堆栈中实现的.一旦函数调用结束,该函数内部的所有局部变量都会被释放掉. 本题目要求对主函数中的数组值进行修改,所以无法通过函数的返回值来实现该功能.要想通过被调函数修改主函数的数组值,只能将数组的首地址(指针)作为函数的参数进行传递,被调函数通过主函数传递来的数组首地址(指针)对数组的内容进行修改. #include<iostream> #include<cstdio> u

辨析函数指针变量和指针型函数

在上一篇随笔(顺序表基本操作算法的代码实现)中,LocateElem()函数的第三个形参的形式是: Status (*compare)(Elemtype e,Elemtype temp); 这是一个函数指针变量,借此机会记录一下函数指针变量和指针型函数的区别. 一.写法上的区别 函数指针变量 指针型函数 int (*function)(int i); int  *function(int i){} 上面是一个例子,可看到函数指针变量只是在:*function处比指针型函数多了一对小括号,下面是两

C提高_day03_两个辅助指针变量挖字符串(强化3)

#define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <stdio.h> //两个辅助指针变量挖字符串, 的第三种内存模型 //指针做函数参数 int spitString4(char *buf1,char c,char ***myp3,int *count) //**pp二级指针做输入 { char *p=NULL, *pTmp = NULL; int tmpc