最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

当前快看:3.6 C提高3day

来源:博客园


(资料图)

1.二级指针做参数输出特性形参想要改变实参 最好通过指针

点击查看代码
#include #include #include int getMem(char* p){p = (char*)malloc(sizeof(char) * 100);if (p == NULL){return -1;}strcpy(p, "abdakg");printf("p = %s\n", p);return 0;}int main(){    char* p = NULL;    int ret = 0;    ret = getMem(p);    return 0;}--正确代码\  ret = getMem(&p) ; 形参多加一个*

2.二级指针做输入:第一种内存模型

点击查看代码
#include #include #include //void print_array(char *p[], int n)void print_array(const char** p, int n){int i = 0;for (i = 0; i < n; i++){printf("%s, ", p[i]);}printf("\n");}void sort_array(const char** p, int n){int i, j;const char* tmp;for (i = 0; i < n - 1; i++){for (j = i + 1; j < n; j++){if (strcmp(p[i], p[j]) > 0){tmp = p[i];p[i] = p[j];p[j] = tmp;}}}}int main(void){//指针数组,指针的数组,它是一个数组,每一个元素都是指针char *const char* p[] = { "111111111", "000000000", "bbbbbbbbb", "aaaaaaaaa" };//char **q = { "111111111", "000000000", "bbbbbbbbb", "aaaaaaaaa" }; //err//p[0] = "111111111"int n = sizeof(p) / sizeof(p[0]);printf("排序前:\n");print_array(p, n);sort_array(p, n);printf("\n排序后:\n");print_array(p, n);printf("\n");system("pause");return 0;}

3._二级指针做输入:第二种内存模型(二维指针)

点击查看代码
#include #include #include void print_array(char a[][30], int n){//printf("a: %d, a+1:%d\n", a, a + 1);int i = 0;for (i = 0; i < n; i++){printf("%s, ", a[i]); //首行地址,和首行首元素地址的值是一样}printf("\n");}int main(void){char a[][30] = { "2222222222", "11111111111", "bbbbbbbbbbb", "aaaaaaaaaaaa" };//a代表首行地址,首行地址和首行首元素地址有区别,但是他们的值是一样//区别:步长不一样printf("a:%d, a+1: %d\n", a, a + 1);char b[50];printf("b:%d, b+1: %d\n", b, b + 1);return 0;}

4.二级指针做输入:第三种内存模型

关键词: 点击查看 输出特性