今天吧,学了点指针,有点晕,现在回顾一下。
1.指针的高级应用,
int main () { char str1 [] = "hello bit." ; char str2 [] = "hello bit." ; char * str3 = "hello bit." ; char * str4 = "hello bit." ; if ( str1 == str2 ) printf ( "str1 and str2 are same\n" ); else printf ( "str1 and str2 are not same\n" ); if ( str3 == str4 ) printf ( "str3 and str4 are same\n" ); else printf ( "str3 and str4 are not same\n" ); return 0 ; 因为 用相同的常量字符串去初始 化不同的数组的时候就会开辟出不同的内存块,所以1跟2不同,3跟4都是指向同一个内存块。 2.指针数组。 int* p[10] 3.数组指针 int(*p)[10] 指向数组的指针,可以存放数组的地址。 注意书写的格式、、、、、、 void print(int (*p)[4], int x, int y){
for (int i = 0; i < x; i++)
{
for (int j = 0; j < y; j++)
{
printf("%d ", p[i][j]);
}
printf("\n");
}
}
int main()
{
int arr[3][4] = { {1,2,3},{4,5,6,7,} };
print(arr, 3, 4);
return 0;
}
这里格式最容易搞混。 3.二级数组传参:有很多种形式, 4.函数指针 void test () { printf ( "hehe\n" ); } int main () { printf ( "%p\n" , test ); printf ( "%p\n" , & test ); return 0 ; } 结果一样, 说明----&函数名跟函数名一样,都是函数的地址。 格式: int (*p)(int int ) =add; 5.函数指针数组。 int(*p[10])(int int); 函数指针数组的应用----转移表 (有空可以写一下; 然后今天就到这里了,tmd对面有一堆傻逼吵死了;