指针传参的理解

一级指针对整数,整数数组,字符数组传参的几种方式:
①void test(int p)
{
}
int main()
{
int a=10;
int
p=&a;
test§;
② void test(int *p)
{
}
int main()
{
int a=10;
test(&a);
③ void test(int *p)
{
}
int main()
{
int a[]={1,2,3,4};
int *p=a;
test§;
}
④void test(int *p)
{
}
int main()
{
int a[]={1,2,3,4};
test(a);
}
⑤void test(char *p)
{
}
int main()
{
char str[] = “hello”;
test(str);
}
⑥void test(char p)
{
}
int main()
{
char str[] = “hello”;
char p = str;
test§;
}
注意:在main函数中定义的指针p和传参进去的p是两个变量,但是他们的内容相同,都指向该指针所指向的数组或整数!!!!
二级指针传参
void test(int
_pp)
{
// 注意:1.&_pp和&pp地址不一样,他们是两个变量,和上面一级指针理解方式相同。
2._pp和pp是两个变量,他们的指向是相同的,都指向一级指针变量p。
3.*pp是进行了一次解引用,相当于p,至于是p的内容还是空间要看p对应的是左值还是右值的问题。
4.pp是进行了两次解引用,相当于a,至于是a的内容还是空间要看a对应的是左值还是右值的问题。
}
int main()
{
int a=10;
int *p=&a; //定义一个指针变量
int
pp=&p //定义一个二级指针变量,该指针指向一级指针变量p
test(pp)
}在这里插入图片描述s函数指针
1.函数本质是代码块,代码块本质是会包含很多组代码,也就决定了会包含一个地址序列,函数名,代表的是代码块的起始地址。
函数名和&函数名是一样的
类型:void(*p)()=&fun

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的 C 代码,可以通过指针传参来实现窗口显示的功能: ```c #include <stdio.h> #include <stdlib.h> void create_window(int width, int height, char **window) { *window = (char *)malloc((width + 1) * height * sizeof(char)); for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { if (j == 0 || j == width - 1 || i == 0 || i == height - 1) { *(*window + i * (width + 1) + j) = '*'; } else { *(*window + i * (width + 1) + j) = ' '; } } *(*window + i * (width + 1) + width) = '\n'; } *(*window + height * (width + 1) - 1) = '\0'; } int main() { int width = 20, height = 10; char *window; create_window(width, height, &window); printf("%s", window); free(window); return 0; } ``` 这个代码中,我们定义了一个 `create_window` 函数,它接受三个参数:窗口的宽度、高度和窗口指针。在函数内部,我们首先使用 `malloc` 动态分配了一块内存区域,用来存储窗口的字符数据。然后,我们使用两个嵌套的 for 循环来遍历每个字符的位置,根据位置来决定应该输出什么字符。最后,我们在字符串末尾添加了一个 null 字符,以便后续的输出函数能够正确地处理这个字符串。 在 `main` 函数中,我们定义了窗口的宽度和高度,并定义了一个指向窗口字符数据的指针。然后,我们调用了 `create_window` 函数,将窗口的宽度、高度和指针传递给了它。在函数返回后,我们使用 `printf` 函数来输出窗口的内容,并使用 `free` 函数释放了刚才动态分配的内存。 希望这个代码能够帮助您理解如何使用指针传参来完成窗口显示的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值