- 论坛徽章:
- 1
|
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- void fun(char* restrict p)
- {
- char* tmp = p;
- printf("%s\n", tmp);
- }
- int main()
- {
- char* restrict p = malloc(10);
- memset(p, 0, 10);
- char* p2 = p;
- sprintf(p, "hello");
- printf("p: %s\n", p);
- printf("p2: %s\n", p2);
- printf("-------------------\n");
- sprintf(p2, "world");
- printf("p: %s\n", p);
- printf("p2: %s\n", p2);
-
- printf("-------------------\n");
- fun(p);
- }
复制代码 运行结果如下:
p: hello
p2: hello
-------------------
p: world
p2: world
-------------------
world
不是说经 restrict 限制后,告诉编译器 p 所指的内存区域只有 p 来修改么,怎么其他非 p 指针照样可以修改呢? |
|