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

c语言指针指向

发布时间: 2023-07-06 21:20:11

1. c语言如何定义指针指向字符型二维数组

在C语言中,可以通过如下方式来定义指向字符型二维数组的指针:
char c[4][5]; // 定义一个4行5列的字符型二维数组
char (*pc)[5]; // 定义一个含5个元素的数组指针
pc=c; // 将数组指针pc指向二维字符数组c
注:
char
(*pc)[5]
不能写为 char
*pc[5]
char
(*pc)[5]
表示数组指针,数组中每个元素为char型;
char
*pc[5]
表示指针数组,数组中每个元素为char*,也即每个元素为指针。

2. C语言如何定义指针指向字符型二维数组

使用指针变量访问二维数组的任意一个元素的方法:

1.使用列指针:定义一个列指针p,让它指向二维数组的第0个元素

int a[3][4];

int *p;

p=&a[0][0];

//因为a[0]是第0行的数组名,所以p=&a[0][0]相当于p=a[0],因为a[i][j]前面共有i*4+j个元素

该二维数组的任意i行j列元素可表示为*(p+i*4+j)。

2.使用行指针:定义一个行指针p,让它指向二维数组的第0行

int a[3][4];

int (*p)[4];

p=a; //也可以为p=&a[0];

其中* ( *(p+i)+j)表示任意一个i行j列的元素。

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

数组的使用规则:

1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。

2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。

3.如不给可初始化的数组赋初值,则全部元素均为0值。

4.如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5};可写为:static int a[]={1,2,3,4,5};动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。

网络-数组

3. c语言指针指向数组的问题。

首先你要明白一点,数组名和指针本质上是一回事,都是地址,该数组的首地址。知道这一点后就可以活学活用了。这是c语言的精髓。
比如你定义了int
*p,a[10];并且让p=a;,
这个操作叫做指针p指向了数组a,其本质是给p这个变量付了一个值,就是数组a的地址,也是a[0]的地址,也是a本身里面存储的内容。
那么要引用a[i],你可以有很多种写法,比如*(a+i),
*(p+i),
p[i],都是等效的。
p++的含义其实不是p=p+1,至少有时不是,p++的操作其实是让p指向下一个元素,也就是原来p指向的是a[0],那么现在p指向a[1]了。由于a是int类型,站4个字节,那么p++这个操作其实是让p的内容增加了4。不要问为什么,c语言就是这么规定的。如果p指向的是一个char类型,那么p++就使p的值增加1。

4. 在C语言中能否直接给指针指向的数据赋值为什么

可以,但int *p;*p=7;这样不行。

因为“能直接给指针指向的数据”赋值,而这里的p还没有指向,所以不能赋值,这种指针有个名字叫“悬浮指针”,是不能给它赋值的。

这样才可以:

int a,*p=&a;*p=7;

实际上就是使a等于了7。

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

注意事项

也可以使用赋值运算符为指针变量赋值,但要保证两个指针变量的类型相同。

假设有如下变量定义:

int i,j,*p,*q;p=&i;q=&j;

这两句将变量i和j的地址分别赋值给指针变量p和q;

执行了q=p后,执行该条语句,指针变量p和q都指向了同一个变量i,因此指针变量p和q中存放的都是变量i的地址&i。变量i此时并没有初始化,只为其分配了内存单元。

注意理解:q=p;和*q=*p

前者为指针变量q赋值,即将指针变量p中存放的某个变量的地址赋值给q。显然,赋值后,q和p就指向了同一个变量。

后者将p指向变量的赋值给q指向的变量。

例子:

p=&i;

q=&j;

i=2;

j=3;

热点内容
oracle同义词存储过程 发布:2025-02-09 06:00:59 浏览:156
quartz数据库配置 发布:2025-02-09 05:58:07 浏览:114
弯矩图编程 发布:2025-02-09 05:58:06 浏览:186
多个ip段怎么配置网关 发布:2025-02-09 05:57:23 浏览:414
体检中心的无线网密码多少 发布:2025-02-09 05:40:15 浏览:516
脚本语言是编译还是解释 发布:2025-02-09 05:30:24 浏览:643
天墓密码结局是什么 发布:2025-02-09 05:25:52 浏览:438
如何找回因特网帐号的密码 发布:2025-02-09 05:20:05 浏览:374
树莓派源码 发布:2025-02-09 05:07:00 浏览:652
安卓手机为什么搜不到懂球帝 发布:2025-02-09 05:04:42 浏览:818