当前位置:首页 » 编程语言 » c语言定义指针
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言定义指针

发布时间: 2022-02-08 23:09:58

c语言指针定义,float **p;

书上写的并不是很准确。
首先你需要明白二维数组名和指针的关系
对于这个二维数组,我们举例为:
1 2 3 4
5 6 7 8
9 10 11 12
因为数组名表示数组的首地址,
<1>所以a表示第一行的首地址
即:a→1 2 3 4
5 6 7 8
9 10 11 12
这时a+1则表示指向第二列的首地址,即
1 2 3 4
a+1→ 5 6 7 8
9 10 11 12
<2>而此时a[0]表示第一行第一列的首地址
a[0]

1 2 3 4
5 6 7 8
9 10 11 12
a[0]+1 表示第一行第二列的首地址

a[0]+1

1 2 3 4
5 6 7 8
9 10 11 12

<3>明白上面的东西你还需要明白**p表示什么意思
float **p, *j, i=100.12;
j=&i;
p=&j;

如果你把上面三条都明白了你的问题就很容易解答了:
首先 float *p1=a[0]; // 表示第一行第一列的地址
而 float **p2=a; //表示第一行的地址
在这种情况下 *p1相当于a[0][0]
*p2相当于a[0]
*(*p2)相当于a[0][0]

也就是说标准的定义应该是
float *p=a[0]; 或者 float **p=a;

以上是我自己的理解,希望可以帮到你。 局限于对C语言知识的了解,目前认为书上的写法是错误的,但是也许通过进一步学习可能存在那一种定义的方法。知识总是在学习的过程中不断地扩展和更新的。每一个阶段的理解和对错的判断不同。如果有了解的朋友也请分享一下。

⑵ 关于C语言指针定义的问题

如楼上所说你对typedef理解还不够

typedef struct xx
就是定义了一个名为xx的数据类型,如int char一样

如有 xx *a
xx被储存在一块内存区域 *a 就成了一个指向这块区域的指针变量

⑶ c语言指针类型定义指针变量

LinkList 是Node型指针,Linklist *s 里面 s是一个数组,数组里存放的是Node型指针,*s是数组第一个元素

⑷ c语言中怎样定义文件指针

头文件后面写一个#define FILE_PATH "D:/T.txt"//引号里面是指向的文件路径

⑸ C语言指针的定义

指针就是地址。
你说的是指针变量。
整形变量,浮点变量,字符变量,指针变量。通过起名的规律就知道指针变量是储存地址的。
指针变量和其他变量的用法一样,作用域一样。在一个子涵数中定义指针变量,是局部变量,其他函数是不能用的。
不要把指针变量想的太复杂,地址(指针)也是数据,和其他字符数据,整形数据一样,没什么差异。
当然,全局变量的指针变量当然可以多函数使用。
指针的定义:地址。
指针变量的定义:存储指针的变量。

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

在C语言里,指针是一组内存的头地址,可以存一个数,一个字符,也可以是一个数组.
变量,就是像定义一个整型变量一样的,定义的是一个指针型变量.

⑺ C语言中,定义指针的问题

问题一是因为,一维数组a[1]代表的是变量,只能用&a[1]取指。而二维数组中a[i]表示的是数组对应行的首地址,所以可以直接赋值给指针。
其实我觉得第二个问题的程序有误,
char *pp;因该用char **pp;

因为p是指针数组,&p[i]只能赋值给指针的指针。

顺便说一下,printf("%s",p)中如果使用%s,表示输出字符串,所以输出函数需要字符串的首地址。而*p指的是p指针所指单元的内容,这是一个字符变量,不是合法地址。

⑻ C语言指针问题:在定义指针时*p=a和p=a有区别吗

当然有区别,区别很大,*p=a,就是给指针的表示的地址赋值,也就是赋值给指针指向的存储单元;而p=a,则表示给指针赋值,也就是指针的地址变成了a。两者一个指明了具体值大小,一个指明了具体位置。

⑼ C语言中面指针是什么定义

三维指针吧```````````
其实无论多少维都差不多
假设int 是4个字节
例如int arry[3][4];
int (*p)[4]=arry;
然后arry[i]就是那一列数组的首地址
你可以理解为arry[i]是一个常量指针
arry[i]每一个是指向一个4*4=16字节数组的指针(int是4个字节);
所以你可以这样引用arry[2][3]
例如 *(arry[2]+3)
或者 *(*(p+2)+3)
如果是3维指针
int arry[3][4][5];
int (*p)[4][5];
可以这样得到arry[1][2][3];
*(*(*(arry+1)+2)+3)
或者*(*(*(p+1)+2)+3)
当然如果不报错的话
还可以int *pa=arry;
*(pa+20+10+3) (前提是你的编译器不爆错,反正有些会报错有些不会)
不懂jia 我昵称

⑽ C语言函数指针定义

函数指针就是函数的指针。它是一个指针,指向一个函数。看例子: A) char * (*fun1)(char * p1,char * p2); B) char * *fun2(char * p1,char * p2); C) char * fun3(char * p1,char * p2); 看看上面三个表达式分别是什么意思? C):这很容易,fun3 是函数名,p1,p2 是参数,其类型为char *型,函数的返回值为char *类型。 B):也很简单,与C)表达式相比,唯一不同的就是函数的返回值类型为char**,是个二级指针。 A):fun1 是函数名吗?回忆一下前面讲解数组指针时的情形。我们说数组指针这么定义或许更清晰: int (*)[10] p; 再看看A)表达式与这里何其相似!明白了吧。这里fun1 不是什么函数名,而是一个指针变量,它指向一个函数。这个函数有两个指针类型的参数,函数的返回值也是一个指针。同样,我们把这个表达式改写一下:char * (*)(char * p1,char * p2) fun1;