【发布时间】:2020-12-06 09:18:42
【问题描述】:
我想将指针的值更改为指向函数内部的不同地址。
我知道我需要一个指向指针的指针来执行此操作,但我犯了一个拼写错误并使用char * 而不是char **,我得到了以下结果。
在函数func中传递指针ptr1的地址,指针p变成指向指针地址的指针。
因此,如果我取消引用指针 *p,我将能够更改它指向的值,在这种情况下,指针 ptr1 的(值)。
我知道我无法访问 ptr1 指向的数据(我需要一个 char ** p 参数)。
但如果我的唯一目的是更改ptr1 指向的地址,那在C 中可以接受吗?
#include <stdio.h>
char array1[10] = {'1','2','3','4','5','6','7',};
char array2[10] = {'A','B','C','D','E','F','G',};
void func(char * p)
{
printf("func is called\n");
*p = array2;
}
int main(void)
{
char * ptr1 = NULL;
ptr1 = array1;
printf("ptr1 = %s\n", ptr1);
func(&ptr1);
printf("ptr1 = %s\n", ptr1);
return 0;
}
这是我得到的结果。
ptr1 = 1234567
func is called
ptr1 = ABCDEFG
【问题讨论】: