这是有声音的视频,请检查播放器或者声音输出设备。
这次学习的内容:指针(一维数组,二维数组,指向字符串)
//=====================================
一维数组
指向数组的第一个元素
#include <stdio.h>
main()
{
int *p, i, a[5];
p = a; //等价于 p = &a[0];
for( i=0; i<5; i++ )
{
scanf( "%d", p++ );
}
p = a;
for( i=0; i<5; i++,p++ )
{
printf( "%d", *p );
}
}
------------
//scanf( "%d", p++ );
scanf( "%d", &a[i] );
//==============================================
* 和 ++ 的优先级情况
#include <stdio.h>
main()
{
int a[3]={1,2,3};
int *p=a; // *p=a+1 ; 这样 p 指向第二个元素了
printf( "%d \n", *p++ );
printf( "%d \n", *++p );
}
//============================================
多维数组的指针
#include <stdio.h>
main()
{
int a[3][4] =
{
{1,2, 3, 4},
{5,6, 7, 8},
{9,10,11,12}
};
int *p;
for( p=&a[0][0]; p<a[0]+12; p++ )
{
printf( "%d ", *p );
}
printf( "\n" );
}
p=&a[0][0] 也可以写成 p=a[0]
//===========================================
字符指针,指向字符串的指针
#include <stdio.h>
main()
{
char s1[5] = "abcd";
char *s2 = "hijk";
printf( "%s \n", s1 );
printf( "%s \n\n", s2 );
printf( "&s1 = %x \n", &s1 );
printf( "&s1[0] = %x \n", &s1[0] );
printf( "s1 = %x \n", s1 );
printf( "-------------------------\n" );
printf( "&s2 = %x \n", &s2 );
printf( "&s2[0] = %x \n", &s2[0] );
printf( "s2 = %x \n", s2 );
}
注意 字符数组和字符指针在内存的分配情况
-------------------------
指针的所有视频就到这里结束了,谢谢观看。88