❶ C语言多级指针问题
int *t=&k;后t指向k,即t的值是k的地址;
s=&t,后s指向t,而*s=&m;的作用是改变s指向的变量t的值,使t的值等于m的地址,即*s=&m;后t指向m
,所以*t的值是m的值5。
❷ c语言多级指针 dev c++ 编译错误
#include<stdio.h>
intmain(void)
{
inti=10;
int*p=&i;//你这里的这个P大写了,兄弟
int**q=&p;
int***r=&q;
return0;
}
❸ C语言 多级指针 指针变量赋地址值的方式
**p就是一个双重指针啊,意思就是说这个指针变量里面放的是一个指针的地址(一般的指针变量里面放的是一个变量的地址),这么说不知道你明不明白。
通过指针变量获得地址值:
int
**p;//双重指针
int
*q;//普通指针
p=&q;//将指针q的地址赋值给p
通过标准函数获得地址值:
int
**p;
p=(int*)malloc(n*sizeof(int*));//动态创建n个int类型的指针变量空间
其实说白了双重指针就是二维数组的头指针,数组的每一行的开头就是那一行所代表的一维数组的指针,二维数组头指针就是每一行的头指针的地址数组。
哇
我自己都觉得指针这个东西好绕。。。。不过多用就明白了。
❹ c语言多级指针问题static int a[][3]={{1,2,3},{4,9},{7}};
(总感觉你抄错题了)
由a的定义知道a是3行,3列数组。
1 2 3
4 9 0
7 0 0
while循环,总共执行了3次,在循环体内i的值是1,2,3
因为p是一个指针数组,其中的三个元素分别指向了a的三行。
所以p[i][j]其实就是a的第i行第j列
*(*(p+i)+i) 表示的就是 a[i][i]
*(*p+i) 表示的是a[i][0]
所以三次循环执行的是:
a[1][1] = a[1][0] + 3 = 7;
a[2][2] = a[2][0] +3 = 10;
a[3][3]其实是不合法的地址
printf *p[0]其实是a[0][0] 也就是 1
printf *(*(p+1)) 是a[1][0]也就是4
❺ delphi中多级指针与偏移,应该怎么写程序
1、指针一般在直接操作内存、调用外部dll、调用API时用到。想要替代?-_-!!
2、指针就是指向数据的一个地址,当然要给它分配内存来放它,计算机里面没有不给分配内存而使用的东东。
3、是的,p就是一个指针。p := '窗口新标题';的意思是把p指向'窗口新标题'这个数据的地址,比如#12345678,计算机在引用它的时候就直接找这个地址来取值就行了。如果你定义的是var p string; p := '窗口新标题'的话,计算机在执行的时候会首先找p这个变量的地址,然后在找这个变量保存的值的地址,这样会有多次扫描内存的过程,造成一些不必要的浪费。
❻ c语言多级指针 dev c++ 编译错误
改成 int* pArr = (int*)malloc(4 * len);//定义了一个动态数组
11行写成scanf。你写成了scnaf