C语言指针操作

#include<iostream>
int main()
{
	char c = 'a';
	char*p = &c;//&c取变量c的首地址
	*(p + 1) = 'b';//将b赋给p+1的地址
	printf("c:%x &c:%c p:%x *p:%x &p:%x", c, *(&c+1), p, *p, &p);//&p指针的所在地址
 
 
#include<iostream>
/*位字段*/
struct BIT_FIELD
{
/*对齐方式*/
	unsigned a : 1;//指定变量a 1B的内存大小
	unsigned b : 7;
	//unsigned : 2;
	unsigned c : 1;
};
char*pA()
{
	char*s = (char*)calloc(1, sizeof(char));//动态内存分配
	memset(s, 'd', 1);//内存操作初始化
	return s;
}
int main()
{
	int a[2] = { 5 ,6};
	int *p = &a[0];
	printf("*p++:%x\n", *p++);
	p = a;
	printf("*(p++):%x\n", *(p++));
	p = a;
	printf("*(++p):%x\n", *(++p));
	*(++p) = 0xffffff65;
	//char*b = (char*)p;
	//printf("%c", *b);
	//printf("%x\n", a[2]);
	printf("size:%d\n", sizeof(struct BIT_FIELD));
	struct BIT_FIELD bf;
	bf.a = 0xffff & 5;
	bf.b = 0x3f;
	struct BIT_FIELD*q = &(bf);
	void*s = q;
	char*d = (char*)s;
	printf("%d\n", *d);
	char*x = pA();
	printf("%c\n", *x);
	free(x);
	static int ts;
	printf("%d\n", sizeof(ts));
	getchar();
	return 0;

}

getchar();return 0;}
#include<cstdio>
/*数组操作*/
int main()
{
	int ary[10];
	int *p = nullptr;
	int *q = nullptr;
	try
	{
		/*
		p = ary + 9;
		*(p + 1) = 6;
		printf("%d", ary[10]);
		*/
		q = ary;
		for (int i = 0; i < 5; i++)
			printf("%x  ", *(q - i));
	}
	catch (const char*s)
	{
		printf("%s\n", s);
	}
	getchar();
	return 0;
}
int add(int a, int b)
{
	return a + b;
}
int main()
{
	int(*p)(int, int);//函数指针定义
	p = add;//初始化
	int d = (*p)(5, 6);
	std::cout << d<<" "<<sizeof p<<"\n";
	
	//std::cout << *q;
	getchar();
	return 0;
}


猜你喜欢

转载自blog.csdn.net/m0_37895939/article/details/80286263