指针
C 语言
char *string;
表示声明一个指向字符(或字符数组)的指针变量。
声明时并没有对其初始化。因此需要对其进行初始化
string = "Hello, World!";
string = malloc(20); // 分配 20 字节的内存,并将首个字节的内存地址存放到 string 变量中
free(string); // malloc 手动分配的内存必须使用 free 释放
// 声明一个指向不确定类型的指针
void *node;
// *p 取出指针变量 p 所指向的内存地址里面的值
void increment(int* p) {
*p = *p + 1;
}
#include <stdio.h>
typedef struct {
int a;
int b;
} MyStruct;
void modifyStruct(MyStruct s) {
s.a = 10; // 仅修改副本,不会影响外部的结构体
}
int main() {
MyStruct myStruct = {1, 2};
modifyStruct(myStruct);
printf("a: %d, b: %d\n", myStruct.a, myStruct.b); // 输出 a: 1, b: 2
return 0;
}
&
运算符
&
运算符用来取出一个变量所在的内存地址。
&
运算符与 *
运算符互为逆运算
go
var ip *int
var fp *float32
package main
import "fmt"
func main() {
var a int= 20 /* 声明实际变量 */
var ip *int /* 声明指针变量 */
ip = &a /* 指针变量的存储地址 */
fmt.Printf("a 变量的地址是: %x\n", &a )
/* 指针变量的存储地址 */
fmt.Printf("ip 变量储存的指针地址: %x\n", ip )
/* 使用指针访问值 */
fmt.Printf("*ip 变量的值: %d\n", *ip )
}