C语言指针详解

C语言指针详解,第1张

C语言指针详解 C语言指针详解
// 举例说明:
// 代码:
#include
int main() {
	// 定义一个指针变量(没有赋值):
	int *p;  // '*' 是指针变量的标识符!表明某一变量是指针变量。
	// 定义一个整型数组变量:
	int array[]= {5,10,15};
	// 指针变量的赋值只能用同类型的变量的地址进行赋值:
	p=array;   // 数组名,就是数组的第一个元素所在的地址! 即array==&array[0]。
	
	printf("已知条件: int *p;     array[]= {5,10,15};     p=array;nn");
	
	// 输出指针p的地址。
	printf("&p tt: %dn",&p);

	// 输出指针p所保存的地址,因为指针变量,存储的是某一变量的地址!
	printf("p tt: %dn",p);

	// 输出数组array的地址。
	printf("array tt: %dn",array);

	// 输出数组array第一个元素的地址,注意由于array[0]的类型为整型,所以获取地址要加取址符'&'
	printf("&array[0] t: %dn",&array[0]);
	
	// 输出数组array第二个元素的地址。
	printf("&array[1] t: %dn",&array[1]);
	
	// 输出指针p所指向的元素的值!'*' 该符号表示获取内存地址中所存储的值!
	printf("*p tt: %dn",*p);
	
	// 输出数组array的地址中所保存的值!
	printf("*array tt: %dn",*array);

	// 输出数组array第二个元素的地址中所保存的值!
	printf("*(&array[1]) t: %dn",*(&array[1]));
	
	// 输出指针地址自增一后的地址!
	printf("++p tt: %dn",++p);
	
	// 输出指针p所指向的元素的值!'*' 该符号表示获取内存地址中所存储的值!
	printf("*p tt: %dn",*p); // 由于p中的地址自增一,因此此时p指向数组第二个元素 

	// 输出指针地址自增一后的地址中所存放的值!
	printf("*(++p) tt: %dn",*(++p)); // 先是p是中的地址自增一,然后再是去地址中存放的值 

	// 输出数组array第三个元素值!
	printf("array[2] t: %dn",array[2]);

	return 0;
}

输出结果:

注意事项:

  • 指针地址的类型为长整型,因此有的编译器运行上述代码时,对于"%d"可能会报错,需要改成"%ld"。
  • const char *p=“Hello world!” 是可行的,因为常量字符串的赋值给指针变量时,赋值的值其实是字符串变量的首地址,而非字符串变量本身!
  • const int *p=5 是不可行的,因为整型变量的赋值,赋值的值本身不是地址,而是整型变量的值!
  • 其他注意事项如下图所示:

    输出结果:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5521482.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存