当前位置:首页 » 编程语言 » c语言指针

c语言指针

发布时间: 2022-01-15 23:07:20

‘壹’ c语言指针

变量赋值 是得到副本,如
t=a;
a=b;
b=t;
指针 则是指向同一个内存地址
因而获得内存里面的内容
如后者

‘贰’ C语言的指针是什么

针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; 能很方便地使用数组和字符串; 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C语言的功能。 学习指针是学习C语言中最重要的一环, 能否正确理解和使用指针是我们是否掌握C语言的一个标志。同时, 指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必须要多编程,上机调试。只要作到这些,指针也是不难掌握的。

指针的基本概念 在计算机中,所有的数据都是存放在存储器中的。 一般把存储器中的一个字节称为一个内存单元, 不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等, 在第二章中已有详细的介绍。为了正确地访问这些内存单元, 必须为每个内存单元编上号。 根据一个内存单元的编号即可准确地找到该内存单元。内存单元的编号也叫做地址。 既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。 内存单元的指针和内存单元的内容是两个不同的概念。 可以用一个通俗的例子来说明它们之间的关系。我们到银行去存取款时, 银行工作人员将根据我们的帐号去找我们的存款单, 找到之后在存单上写入存款、取款的金额。在这里,帐号就是存单的指针, 存款数是存单的内容。对于一个内存单元来说,单元的地址即为指针, 其中存放的数据才是该单元的内容。在C语言中, 允许用一个变量来存放指针,这种变量称为指针变量。因此, 一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。图中,设有字符变量C,其内容为“K”(ASCII码为十进制数 75),C占用了011A号单元(地址用十六进数表示)。设有指针变量P,内容为011A, 这种情况我们称为P指向变量C,或说P是指向变量C的指针。 严格地说,一个指针是一个地址, 是一个常量。而一个指针变量却可以被赋予不同的指针值,是变。 但在常把指针变量简称为指针。为了避免混淆,我们中约定:“指针”是指地址, 是常量,“指针变量”是指取值为地址的变量。 定义指针的目的是为了通过指针去访问内存单元。

既然指针变量的值是一个地址, 那么这个地址不仅可以是变量的地址, 也可以是其它数据结构的地址。在一个指针变量中存放一

个数组或一个函数的首地址有何意义呢? 因为数组或函数都是连续存放的。通过访问指针变量取得了数组或函数的首地址, 也就找到了该数组或函数。这样一来, 凡是出现数组,函数的地方都可以用一个指针变量来表示, 只要该指针变量中赋予数组或函数的首地址即可。这样做, 将会使程序的概念十分清楚,程序本身也精练,高效。在C语言中, 一种数据类型或数据结构往往都占有一组连续的内存单元。 用“地址”这个概念并不能很好地描述一种数据类型或数据结构, 而“指针”虽然实际上也是一个地址,但它却是一个数据结构的首地址, 它是“指向”一个数据结构的,因而概念更为清楚,表示更为明确。 这也是引入“指针”概念的一个重要原因。

指针变量的类型说明

对指针变量的类型说明包括三个内容:

(1)指针类型说明,即定义变量为一个指针变量;

(2)指针变量名;

(3)变量值(指针)所指向的变量的数据类型。

其一般形式为: 类型说明符 *变量名;

其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。

‘叁’ 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; 无法直接初始化

//printf("%d ", *b);

e=e+2; //移动两个地址单元

d=&c; //d指向c的地址来表示值

c=4; //修改原c变量的值,d指针的值会发生改变

b=(int *)malloc(sizeof(int));//为b分配一个int型空间来直接存储值

*b=2;//分配空间后可以直接赋值了

printf("this is e,b,c,d :%d %d %d %d ",*e,*b,c,*d);

2、类型说明

(1)int *a :表示一个指向int型变量的指针,指向的是变量的地址单元

(2)char *b:表示一个指向char变量的指针

*a表示的是这个指针指向地址的值,a为此指针本身的地址,这点要明确,一般用*(a+1)、*(a+2)来表示值,如:

int nums[5]={0,1,2,3,4};

int *a=nums;

printf("%d %d %p ",*a,*(a+1),a);

(3)c语言指针扩展阅读:

指针的运算

指针指向变量地址,若原变量的内容发生了变化,它本身也会发生变化,指针之间的运算一般为值运算和地址运算

(1)值运算:直接通过*运算方式,像a+*(a+1),结果为第一个元素与第二个元素相加。

int nums[5]={0,1,2,3,4};

int *a=nums;

(2)地址运算:通过a+i的方式.指针会指向a的下i个地址。

int nums[5]={0,1,2,3,4};

int *a=nums;

a=a+2;

printf("%d ",*a);

结果输出2。

参考资料来源 :指针-网络

‘肆’ c语言指针

首先,*和&一定是作用于指针类型,所以首先保证你的p一定是一个指针类型。
*操作符返回某个指针所指的类型的值
&操作符返回某个类型变量的存储地址
下面来看:假如有一个整型变量i,它的值是100,存储在地址0x000000F0上(不要在意地址的合理性,仅是假设),p是指向i的一个整型指针(即int
*p
=
&i),p存储在地址0x000000F4上。下面:
*p
表示p所指整型的值,即i的值,10
&p表示整型指针p的存储地址,即0x000000F4
*&p表示存储在0x000000F4上的整型指针变量的值,即指针p的值,即0x000000F0(变量i的地址)
所以你的答案应该是:p与*&p一样,而*p与i一样

‘伍’ C语言指针

在循环里, 可以看出 p[2]=&a[2*4], 所以 p[2]=&a[8]
也就是说p[2]是指向a数组中第9个元素的指针
p[2]+1就是将指针向后移动一个单位, 即指向a数组第10个元素(相当于&a[9])
括号前面的星号是从地址中取得对应值, 也就是10

‘陆’ C语言指针

fun函数在这里相当于什么也没干
虽然fun的参数列表是两个指针, 但是按址传递的时候, 能够互换的是地址所指向的变量, 而不是地址本身
a/b 也是变量(指针类型), 在fun里, a/b两个值自己交换了, a/b对于所指向的int来说是按址传递, 但是按照指针来说还是按值传递, 原来地址所指向的内容(int值)并没有发生变化, 所以输出还是那样

‘柒’ C语言指针解释

①* p++——取p指向的目标值4,并将p+1使其指向5,在表达式运算后++生效。
②(*p)++——(不计①的结果)将p指向的目标值4加1使其为5,在表达式运算后++生效。
③*( p++)——这与①完全一样。
⑤++* p——取p指向的目标值4并增1生效后参与表达式运算。
⑥*++ p——将指针p增1移到指向下一元素并取得,即5。

‘捌’ c语言指针的概念

指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; 能很方便地使用数组和字符串; 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C语言的功能。 学习指针是学习C语言中最重要的一环, 能否正确理解和使用指针是我们是否掌握C语言的一个标志。同时, 指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必须要多编程,上机调试。只要作到这些,指针也是不难掌握的。

指针的基本概念 在计算机中,所有的数据都是存放在存储器中的。 一般把存储器中的一个字节称为一个内存单元, 不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等, 在第二章中已有详细的介绍。为了正确地访问这些内存单元, 必须为每个内存单元编上号。 根据一个内存单元的编号即可准确地找到该内存单元。内存单元的编号也叫做地址。 既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。 内存单元的指针和内存单元的内容是两个不同的概念。 可以用一个通俗的例子来说明它们之间的关系。我们到银行去存取款时, 银行工作人员将根据我们的帐号去找我们的存款单, 找到之后在存单上写入存款、取款的金额。在这里,帐号就是存单的指针, 存款数是存单的内容。对于一个内存单元来说,单元的地址即为指针, 其中存放的数据才是该单元的内容。在C语言中, 允许用一个变量来存放指针,这种变量称为指针变量。因此, 一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。图中,设有字符变量C,其内容为“K”(ASCII码为十进制数 75),C占用了011A号单元(地址用十六进数表示)。设有指针变量P,内容为011A, 这种情况我们称为P指向变量C,或说P是指向变量C的指针。 严格地说,一个指针是一个地址, 是一个常量。而一个指针变量却可以被赋予不同的指针值,是变。 但在常把指针变量简称为指针。为了避免混淆,我们中约定:“指针”是指地址, 是常量,“指针变量”是指取值为地址的变量。 定义指针的目的是为了通过指针去访问内存单元。

既然指针变量的值是一个地址, 那么这个地址不仅可以是变量的地址, 也可以是其它数据结构的地址。在一个指针变量中存放一
个数组或一个函数的首地址有何意义呢? 因为数组或函数都是连续存放的。通过访问指针变量取得了数组或函数的首地址, 也就找到了该数组或函数。这样一来, 凡是出现数组,函数的地方都可以用一个指针变量来表示, 只要该指针变量中赋予数组或函数的首地址即可。这样做, 将会使程序的概念十分清楚,程序本身也精练,高效。在C语言中, 一种数据类型或数据结构往往都占有一组连续的内存单元。 用“地址”这个概念并不能很好地描述一种数据类型或数据结构, 而“指针”虽然实际上也是一个地址,但它却是一个数据结构的首地址, 它是“指向”一个数据结构的,因而概念更为清楚,表示更为明确。 这也是引入“指针”概念的一个重要原因。

‘玖’ c语言,指针

#include<stdio.h>
void input(int *a,int n)
{int i;
for(i=0;i<10;i++)
scanf("%d",a+i);
}
void output(int *a,int n)
{int i;
for(i=0;i<10;i++)
printf("%d ",*(a+i));
printf("\n");
}
void fun(int *a,int n)
{int i,j,max,min,t;
max=min=0;
for(i=1;i<n;i++)
if(a[i]>a[max])max=i;
else if(a[i]<a[min])min=i;
t=a[0];a[0]=a[min];a[min]=t;
if(max==0)max=min;
t=a[n-1];a[n-1]=a[max];a[max]=t;
}
int main()
{ int i,j,a[10];
input(a,10);
fun(a,10);
output(a,10);
return 0;
}

热点内容
数据库设计模板 发布:2024-11-15 00:47:25 浏览:825
编程的悟性 发布:2024-11-15 00:47:24 浏览:733
主流可编译语言 发布:2024-11-15 00:42:23 浏览:729
excel缓存清除 发布:2024-11-15 00:39:53 浏览:486
机械键盘可编程 发布:2024-11-15 00:39:09 浏览:912
php判断字符开头 发布:2024-11-15 00:35:33 浏览:507
网易苹果游戏怎么转移到安卓 发布:2024-11-15 00:07:52 浏览:270
win7php环境搭建 发布:2024-11-15 00:06:55 浏览:17
erpjava 发布:2024-11-14 23:52:23 浏览:253
电脑版地平线四怎么连上服务器 发布:2024-11-14 23:46:42 浏览:472