C语言 指针

指针是C语言的一种数据类型,指的是内存单元的地址。
指针变量:专门存放指针内存地址的变量。 包含指向的数据类型
变量访问的两种方式:
直接访问:& scanf("%d",&b)  &取地址运算符
简介访问:* *p              *指针运算符,间接访问运算符 解引用运算符
指针变量的运算
赋值运算
1.指针变量的值赋予相同类型指针变量

#include <stdio.h>

int main(){
	int a = 10, *pa = &a, *pb;
	printf("%d \n",*pa);
	printf("%d \n",pa);
	pb = pa;
	printf("%d \n",pb);
	return 0;
}

结果:
10 
6422028 
6422028 
[Finished in 410ms]

2.把数组的首地址赋予同类型变量指针

	int c[5]={1, 2, 3, 4, 5}, *pc, i;

	for(i=0;i<5;i++){
		printf("%d >>> %d \n",i,c[i]);
	}
	pc = c; // or pb = b[0]
	printf("%d \n",pc);
	printf("%d \n",*pc);
	printf("%d \n",*pc+2);

结果:
0 >>> 1 
1 >>> 2 
2 >>> 3 
3 >>> 4 
4 >>> 5 
6422000 
1 
3 
[Finished in 561ms]

3.把字符串首地址赋予同类型的指针变量

	char *pd;
	pd = "Hello, World!";
	char *pe = "Hello";
	// 输出 pd 指向的字符串
	printf("%s \n",pd);
	// 输出 pd 的地址
	printf("%d \n",pd);
	// 输出 pe 的字符串
	printf("%s \n",pe);
	// 输出 pe 指向的字符串的第一个字符的 ASCII 值
	printf("%d \n",*pe);

结果:
Hello, World! 
4210688 
Hello 
72 
[Finished in 530ms]

实际上,`pd` 的值是一个内存地址,而不是字符串本身。在C语言中,字符串常量在内存中是以字符数组的形式存储的,而指针变量 `pd` 只是存储了字符串常量的起始地址。
当您使用 `printf("%s \n", pd);` 时,`printf` 函数会根据 `%s` 格式说明符去 `pd` 所指向的内存地址中寻找以 null 结尾的字符序列,并输出该序列。因为 `pd` 指向了字符串常量 "Hello, World!" 的起始地址,所以 `printf` 函数会从该地址开始输出字符,直到遇到 null 字符为止,这样就输出了整个字符串 "Hello, World!"。
虽然 `pd` 的值本身只是一个地址,但是在 `printf` 函数中,使用 `%s` 格式说明符会根据该地址找到相应的字符串并输出。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值