当前位置:三九宝宝网 → 宝宝教育 → 教学论文 → 正文

C语言指针基本概念及其指针变量的定义是什么

更新:12-28 整理:39baobao.com
字体:

[C语言中函数指针用法]在C语言中,指针被广泛使用,而函数指针是最为高级的用法之一,也是容易疑惑的地方之一。 看下面这段代码: #include <stdio.h> void F(int a, int* output) { printf("a = %d\n", a)...+阅读

我们知道变量e79fa5e98193e59b9ee7ad9431333332633039在计算机内是占有一块存贮区域的,变量的值就存放在这块区域之中, 在计算机内部, 通过访问或修改这块区域的内容来访问或修改相应的变量。Turbo C语言中, 对于变量的访问形式之一,就是先求出变量的地址,然后再通过地址对它进行访问,这就是这里所要论述的指针及其指针变量。

所谓变量的指针, 实际上指变量的地址。变量的地址虽然在形式上好象类似于整数, 但在概念上不同于以前介绍过的整数, 它属于一种新的数据类型, 即指针类型。Turbo C中,

一般用指针来指明这样一个表达式&x的类型,而用地址作为它的值,也就是说, 若x为一整型变量, 则表达式&x的类型是指向整数的指针,而它的值是变量x的地址。同样, 若double d;则&d的类型是指向以精度数d的指针,而&d的值是双精度变量d的地址。所以,

指针和地址是用来叙述一个对象的两个方面。虽然&x、&d的值分别是整型变量x和双精度变量d的地址, 但&x、&d的类型是不同的, 一个是指向整型变量x的指针, 而另一个则是指向双精度变量d的指针。在习惯上,很多情况下指针和地址这两个术语混用了。

我们可以用下述方法来定义一个指针类型的变量。

int *ip;

首先说明了它是一指针类型的变量,注意在定义中不要漏写符号*,否则它为一般的整型变量了。另外,在定义中的int 表示该指针变量为指向整型数的指针类型的变量, 有时也可称ip为指向整数的指针。ip是一个变量, 它专门存放整型变量的地址。

指针变量的一般定义为:

类型标识符 *标识符;

其中标识符是指针变量的名字, 标识符前加了*号,表示该变量是指针变量, 而最前面的类型标识符表示该指针变量所指向的变量的类型。一个指针变量只能指向同一种类型的变量, 也就是讲, 我们不能定义一个指针变量, 既能指向一整型变量又能指向双精度变量。

指针变量在定义中允许带初始化项。如:

int i, *ip=&i;

注意, 这里是用&i对ip初始化, 而不是对*ip初始化。和一般变量一样,对于外部或静态指针变量在定义中若不带初始化项, 指针变量被初始化为NULL, 它的值为0。Turbo C中规定, 当指针值为零时, 指针不指向任何有效数据, 有时也称指针为空指针。因此, 当调用一个要返回指针的函数时(以后会讲到), 常使用返回值为NULL来指示函数调用中某些错误情况的发生。

本文地址:https://www.39baobao.com/show/29_16240.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

C语言指针的用法#include<stdio.h> #include<math.h> #include <conio.h> void sort(char *a[],int n) { int i,j; char *temp; for(i=0;i<n;i++) for(j=i+1;j<n;j++) if(strcmp(a[i],a[j]<...

c语言指针用法int top 应不属于指针的范畴了,而是int的常用变量的定义,这个top要看是怎么用法,如果按照负数,0,正数来使用的话,可以判断它是用来做为这个类的一个特殊的定义标识; 如果这个变量是...

C语言指针递归调用怎么搞#include<stdio.h> int main() { void sort(int *p,int n); int i,n; int *p,num[20]; printf("input n\n"); scanf("%d",&n); printf("please input these numbers\n"); for(i=0;...

c语言指针合并两个升序数组还升序#include void merge(char *dest, char *src1, char *src2) { while (*src1 & *src2) { if (*src1 { *dest++ = *src1++; } else { *dest++ = *src2++; } } while(*src1) *d...

c语言中指针数组和字符串数组的区别高手请进!#include "stdio.h" #include "string.h" void shellsort(char v[][10], int n); void writeline(char linp[][10],int n); main() { char line[][10]={"C++","Fortran","Basic","Pasca...

C语言字符指针和字符数组的区别两个用法差不多,唯一的区别在于字符数组的值在程序运行过程中是可以修改的,但是字符指针的值在运行过程中是不能修改的。 #include using namespace std; int main() { char *...

c语言中指针变量怎么理解怎么用指针变量是一个变量,它保存的是另一个变量的内存地址。你如果知道了这个指针变量保存的值,就可以知道它所指向变量的内存地址,于是就可以间接访问到那一个变量。 定义:指针变量...

c语言字符指针变量对于printf这个函数,有着一系列的格式符号 比如你说的%d %s 不同的格式,有着不同的参数类型要求 比如%s 要求对应参数必须是char *型的 你例子中的string就是这一类型 所以不...

C语言的函数指针变量double(*f1)(double),是一个指向函数的指针f1,这个指针可以指向的函数的参数是(double),返回一个double的值, double(*)(double),是一个类型说明,说明这个类型是函数指针类型,可以指...