// 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;
}
哎呀 指针
最新推荐文章于 2024-03-08 20:27:34 发布
这篇博客深入探讨了C语言的基础知识,包括数组、字符串的使用,以及指针的概念和操作。作者详细解释了如何声明和使用指针,如何通过指针访问和修改数组,以及函数指针的应用。此外,还介绍了动态内存分配和释放的基本原理,并展示了布尔类型在C语言中的应用。博客最后讨论了数组和指针在实际编程中的常见用法。
摘要由CSDN通过智能技术生成