Created
November 18, 2016 01:34
-
-
Save donly/a6c4d40b2ec8a2213cc08a459d377fc5 to your computer and use it in GitHub Desktop.
C language pointer usage demo
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int main(int argc, const char * argv[]) { | |
/* 指针、引用和取值 | |
int *ptr; // 声明一个 int 指针 | |
int val = 1; // 声明一个 int 值 | |
ptr = &val; // 为指针分配一个 int 值的引用 | |
int deref = *ptr; // 对指针进行取值 | |
int nullVal; // 默认值是 0 | |
int *nullPtr = &nullVal; | |
printf("Hello, World!\n%p=%d\n%p=%d\n", ptr, deref, nullPtr, nullVal); | |
*/ | |
/* void 指针,NULL 指针和未初始化指针 | |
int *uninit; // int指针未初始化 | |
int *nullptr = NULL; // 初始化为NULL | |
void *vptr; // void 指针未初始化 | |
int val = 1024; | |
int *iptr; | |
int *castptr; | |
// void类型可以存储任意类型的指针或引用 | |
iptr = &val; | |
vptr = iptr; | |
printf("iptr=%p, vptr=%p\n", iptr, vptr); | |
// 通过显示转换,我们可以把一个void指针转成 | |
// int指针并进行取值 | |
castptr = (int *)vptr; | |
printf("*castptr=%d\n", *castptr); | |
// 打印null和未初始化指针 | |
printf("uninit=%p, nullptr=%p\n", uninit, nullptr); | |
// 不知道你会得到怎样的返回值,会是随机的垃圾地址吗? | |
// printf("*nullptr=%d\n", *uninit); | |
// 这里会产生一个段错误 | |
// printf("*nullptr=%d\n", *nullptr); | |
*/ | |
/* 指针和数组 */ | |
int myArray[4] = {1, 2, 3, 0}; | |
//int *ptr = myArray; | |
int *ptr; | |
ptr = &myArray[0]; | |
//ptr = myArray; | |
printf("*ptr = %d\n", *ptr); | |
// 数组变量是常量,不能做下面的赋值 | |
// myarray = ptr | |
// myarray = myarray2 | |
// myarray = &myarray2[0] | |
/* 指针与结构体 | |
struct person { | |
int age; | |
char *name; | |
}; | |
struct person first; | |
struct person *ptr; | |
first.age = 21; | |
char *fullname = "GB"; | |
first.name = fullname; | |
ptr = &first; | |
printf("age = %d, name = %s\n", first.age, ptr->name); | |
printf("age = %d, name = %s\n", first.age, (*ptr).name); | |
*/ | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment