哎呀 指针

这篇博客深入探讨了C语言的基础知识,包括数组、字符串的使用,以及指针的概念和操作。作者详细解释了如何声明和使用指针,如何通过指针访问和修改数组,以及函数指针的应用。此外,还介绍了动态内存分配和释放的基本原理,并展示了布尔类型在C语言中的应用。博客最后讨论了数组和指针在实际编程中的常见用法。
摘要由CSDN通过智能技术生成
// An highlighted block
#include<stdio.h>
#include<stdbool.h>
int main()
{
	int i=0;
	int dd[3]={11,12,13};
	char c='c';
	char a[5]={'a','b','c','d','e',}; 
	char b[5]="abcde";  //定义一个字符串的时候不用写大括号
						//直接双引号然后加上[]里个数 
	for(i=0;i<sizeof(b)/sizeof(b[0]);i++){
		printf("%c ",b[i]);
	}
		printf("\n");
	char d[]="abcdefghijklmnopqrstyuwxyz"; //可以不用写个数 
	for(i=0;i<sizeof(d)/sizeof(d[0]);i++){
		printf("%c ",d[i]);
	}
	 	printf("\n");
	// 	
	char *p="hello wocao!";     //定义一个指针 指向一个数组的第一个元素地址 
	 printf("%s\n",p);         //直接从数组指针开始打印字符串 
	 printf("%s\n",d);        //从数组的首地址开始打印字符串 用  %s 
     printf("%p\n",p);  
  	
	char (*pp)[4] ;         //定义一个指针,指向一个数组体  必加括号()和[]个数; 
	  printf("dda%p\n",pp);	//这个指针变量加1 等于跨越整个数组体所占空间 
  	  printf("dda%p\n",pp+1);  //他妈的这个地址不就是第一个元素的地址吗 不知道有什么用! 
  	  
	void wocao(){               //定义一个函数 
		printf("卧槽---!!\n");//函数内容 
	} 					     	//
	void (*dp)();				//	(定义个函数指针 / 
	dp=wocao;					//	指针指向函数名    / (直到这一步我算是看出来了 所有的东西
								//	函数名就代表函    /  都是存在内存中的,存在于以某个地址开始
								//  所在的地址开始    /  的地方)	
	dp(); 	//	通过指针访问	//  位置 )
	(&dp);	//	通过取出内容	//
	printf("函数地址    ++%p\n",++dp);  // 401531 我感觉这两个数的差值就是wocao函数所占内存空间的 
	printf("函数开始的地址%p\n",&dp);     // 22fdd8 大小,先这样认为吧!! 后面还有结构体 
	
	int *af=(int*)malloc(16); //malloc函数给你找了一个空间返回给你一串数字,这一串数字就是地址的门牌号 
							//把这一串数字强制转换成一个地址,好让左边定义的指正指向该地址!
	if(af==NULL){
		printf("如果开辟失败就返回一个NULL\n");
	}else printf("刚开辟的空间从地址%p开始\n",af);	
	free(p);p=NULL;         //释放内存,该啥时候释放还没搞清楚! 
		 				 
	bool bol[]={0,1,0,99,1,88,0,5};         // 以后PS2手柄可以利用布尔类型数组 
	printf("布尔类型的大小%d\n",sizeof(bool));
	printf("char类型的大小%d\n",sizeof(char));
	printf("int类型的大小%d\n",sizeof(int));
	for(i=0;i<10;i++){
		printf("布尔类型打印%d-\n",bol[i]);
	}
  	 / /                  
  	 int q,w,e,r;
  	 //char *ppp [4];	int* ppp和int *ppp编译结果实际上是一样的;		
  	 int  *ppp [4];    // int型的指针数组只能放 int类型数据的地址; 
  	 int *pppd[]={&q,&w,&e,&r}; //指针数组其实就是定义了一个普通数组 ,
	   							//这个数组里放的有其他变量的地址罢了! 
  	 char *pd="hello wocao!";  
  	 int aac[5];              //在定义一个数组的时候要么给出元素个数 
	 char bba[]={11,3,5};     // 					要么在=(等于号后)直接给出元素 
  	 ppp[0]=&q;
  	 ppp[1]=&w;
  	 ppp[2]=&e;
  	 ppp[3]=&r;
  	 
  	 
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值