对于指针我也是蒙的,但是忽然想通了一点所以记下来
指针 就是指向 ,*就是找到你指向的内容
下面我做一个简单的小程序 加强一下理解 我在主函数中定义一个整形指针变量p,然后要通过三级指针修改*p的值
#include<stdio.h>
void g(int ***w)
{
int i = 10;
**w=&i; //w是一个三级指针 指向 指向指针变量p的指针的指针,所以*w 就是q,**w就是p,
}
void f(int **q){
g(&q); //将int **类型q的地址作为参数传给 函数g,应该用int ***类型接受;
}
int main(void)
{
int *p=null; //声明整形指针变量p
f(&p); //将p的地址作为参数传给函数f;因为p是指针型变量所以应该用int **类型行参接受&p;
printf("%d\n",*p);
printf("%d\n",*p);
return 0;
}
注意这个赋值很短暂 如果想保留赋值应该用动态内存,关于静态与动态存储显而易见 #include <stdio.h>
指针 就是指向 ,*就是找到你指向的内容
下面我做一个简单的小程序 加强一下理解 我在主函数中定义一个整形指针变量p,然后要通过三级指针修改*p的值
#include<stdio.h>
void g(int ***w)
{
int i = 10;
**w=&i; //w是一个三级指针 指向 指向指针变量p的指针的指针,所以*w 就是q,**w就是p,
}
void f(int **q){
g(&q); //将int **类型q的地址作为参数传给 函数g,应该用int ***类型接受;
}
int main(void)
{
int *p=null; //声明整形指针变量p
f(&p); //将p的地址作为参数传给函数f;因为p是指针型变量所以应该用int **类型行参接受&p;
printf("%d\n",*p);
printf("%d\n",*p);
return 0;
}
注意这个赋值很短暂 如果想保留赋值应该用动态内存,关于静态与动态存储显而易见 #include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
void g(int ***q)
{
**q = (int *)malloc(sizeof(int));
scanf("%d",**q);
}
void f(int **q){
g(&q);
}
int main() {
// insert code here...
int *p; //定义一个int *的指针变量p
f(&p); //将 指针变量p的地址作为参数传给f,f需要定义一个int **类型的指针q变量来接受,且*q == p;
printf(“%d\n",*p);
printf("%d\n",*p);
return 0;
}