C语言 指针,重点详解,(大佬必看, 进阶架构师)

欢迎访问个人博客http://www.jkraise.top

字符串

//      字符串, 只用字符数组 来存
int a[100] = {"hello world"};

printf("int a = %s", a);    字符串输出用%s  


// 用字符串函数
//puts(" 打印字符串")

// gets("从键盘获取字符串")   能获取空格,   但有字符限制

// strcat(old, new);   连接字符串   new 连接到 old



//  compare 比较
// strcmp(old, new);   比较字符串的值
//   返回值  为0   即相等
//   返回值  非0    即不相等

// strcpy(old, new)   拷贝      把原来的字符串进行覆盖, 
new 的字符串给 old 字符串



指针
// 定义指针变量
int *a;    // *的 作用是 表示 p 是个指针变量

// 初始化
int b=20;

int *p =&b;   // 获取b的内存地址

printf("%d /n", *p) // *的 作用是 表示 取去指向变量的值



//指针没有初始化里面是一个垃圾值,这时候我们这是一个野指针,如 果操作一个野指针. 

//1)可能会导致程序崩溃 

//2)访问不该访问数据 所以指针必须初始化才可以访问其所指向存储 区域



//  指向数组元素的指针

int num[4]=[1,2,3,4]
int *a = &num[0]

int *b = a   //   &a[0]   数组的名字就是 数组元素 第零个的地址


//   
int *c = a[3]
printf('%ld/n', c -b)  //   元素之差

// 两个指针相减, 如p1-p2 (只有p1和p2都指向同一数组中的元素时才有意义)

指针指向同一个数组, 可以进行相减

字符串指针
char name[]= {"hello world"};

char *p={"hello world"}



// 程序分为五个大区

// 堆区
// 栈区
// 常量区      不允许修改
// 全局静态区
// 代码区      不允许修改

//  字符串的结尾 \0



二级指针
int **p=Null;

向程序申请一块内存
char *p=Null;

//   使用malloc函数   向系统申请一块可用的空间,  100 表示申请的字节数
p = (char *)malloc(100);

// 从键盘获取数据,   存入p指向的内存空间中
sanf("%s", p);

// 输出
printf("p = %s\n", p);

return 0;

指针数组
int *num[4];//    指针数组

int age[4];
int *temp[4];
// 存放   指针数组元素
temp[0] = age[0];
temp[1] = age[1];
temp[2] = age[2];
temp[3] = age[3];


在这里插入图片描述

复习

  1. 字符串
	1. "hello world"---->字符串 常量
	2. char num[];// 字符数组

		char num[]={"hello world"};// 大小应该为:12Byte   (bit)
		char num[]="hello world";

		char num[]={'a','b','c','d','e'};// 大小应该为:5Byte

		for(int i=0;i<5;i++){

			printf("%c", num[i]);

		}

		printf("%s", num);


		puts(num);


		scanf("%s", num);

		gets(num);

	3.  #include<string.h>
		strcmp();//比较是否相等
		strcat();// 连接
		strcpy();// 拷贝
		strlen();// 计算实际的长度(不包括) char num[]={'a','b','\0','d','e','\0'};


		#include<stdlib.h>


  1. 指针
	1. 地址就是指针 (pointer)
		int a=100;

		a;
		&a;// printf("%p"); 16进制打印

	2. 	int *p;

		int num;

		char num2;

		p = &num;

		*p = 100;

	3. void test(int num){

		num+=100;

	}

		void test2(int *p){

			*p = *p + 100;

		}

		int num=0;
		int *p2=NULL;

		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值