快速入门指针

基本介绍

简单的说 指针表示一个地址(存放的也是地址),

举例说明:

#include<stdio.h>
void main(){
    
    
		
	//定义一个num
	int num = 1;
	
	//定义指针类型 int *
	int *ptr = &num; //指针类型指向 变量num
	
	//输出num的值 格式是%d
	//输出num的地址值,输出的格式是%p, &num代表取出num的地址值
	printf("num的值 = %d \t num的地址值 = %p \n",num,&num); 
	

	//打印出指针的地址值,和指针指向它所对应的变量的地址值
	printf("\nptr的地址值是 %p, ptr 存放的地址值是一个地址,地址就是num的地址 %p \n",&ptr,ptr);
	
	//获取指针指向的值 答案应该是1
	printf("\nptr指向的值是 %d",*ptr);
	
}
#include<stdio.h>

void main(){
    
    
    
    int a = 300; // a = 300 
    int b = 400; // b = 400 
    int * ptr = &a; //ok ptr 指向 a 
    *ptr = 100; // a = 100 
    ptr = &b; // ok ptr 指向 b 
    *ptr = 200; // b = 200 
    printf("\n a=%d,b=%d,*ptr=%d", a, b, *ptr); //a = 100, b = 200, *ptr = 200

}

指针细节说明

1)基本类型,都有对应的指针类型, 形式为 数据类型 *,比如 int 的对应的指针就是 int *, float 对应的指针 类型就是 float * , 依次类推。
2)此外还有指向数组的指针、指向结构体的指针,指向共用体的指针,(二级指针,多级指针)。

值传递和地址传递

C 语言传递参数(或者赋值)可以是值传递(pass by value),也可以传递指针(a pointer passed by value), 传递指针也叫地址传递。

1)默认传递值的类型:基本数据类型 (整型类型、小数类型,字符类型), 结构体, 共用体。
2)默认传递地址的类似:指针、数组

值传递和地址传递使用特点:
1)值传递:将变量指向的存储内容,在传递/赋值时,拷贝一份给接收变量.
在这里插入图片描述由下图可见,地址值发生了变化。
在这里插入图片描述

2)地址传递 也叫 指针传递:如果是指针,就将指针变量存储的地址,传递给接收变量,如果是数组,就将数 组的首地址传递给接收变量。

在这里插入图片描述
3)代码展示

#include<stdio.h>

void main(){
    
    
		
	int num = 100; 
	int *p = &num; 
	int * p2 = p; 
	*p2 = 55; 
	
	printf("num=%d *p=%d *p2=%d ", num, *p, *p2);
	
}

由下图可见,num的值变成了55 ,*p , *p2d的值都是 55,
num的地址值不变,*p 和 *p2的地址值相同,并且p和p2 都指向num的地址值。
在这里插入图片描述

Guess you like

Origin blog.csdn.net/weixin_45417821/article/details/121933171