C语言--指向多维数组的指针和指针数组

#include <stdio.h>
//void show(char *p[]);
void show(char s[][10]);
int main(){
        char s[3][10]={"123","abc","xyz"};
        char *p[10];
        //指针数组要循环复制
        p[1] = s[1];
        char (*ps)[];
        ps = s;
}
#include <stdio.h>
#include <string.h>
#define SIZE 80
#define LMT 3
#define HALT " "

/**
 * 字符串排序函数函数原型声明
 */
//如果直接传递二维数组,函数里边只能显示数组元素,不能更改元素位置
void str_sort(char str[][SIZE],int num);
//void str_sort(char *str,int num);

int main(){
        char input[LMT][SIZE];
        //指针数组,要分别为每个元素赋值,指向多维数组的指针只需要为指针变量赋值即可
        //指针数组初始化的时候要指定数组的大小,指向多维数组的指针只分配指针变量的内存空间即可
        char *ps[LMT];
        int ct = 0;
        int k;

        while(ct<LMT && gets(input[ct]) != NULL && input[ct][0] != ‘\0‘){
                ps[ct] = input[ct];
                ct++;
        }
        //str_sort(ps,ct);
        str_sort(input,ct);
        //puts("Here is the res list:");
        //for(k=0;k<ct;k++){
        //      puts(ps[k]);
        //}
        return 0;
}

void str_sort(char str[][SIZE], int num){
        //char *tmp;
        //int top,seek;
        //for(top=0;top<num-1;top++){
        //      for(seek=top+1;seek<num;seek++){
        //              if(strcmp(str[top], str[seek]) > 0){
        //                      tmp = str[top];
        //                      str[top] = str[seek];
        //                      str[seek] = tmp;
        //              }
        //      }
        //}
        int i;
        str[1][1]=‘*‘;
        for(i=0;i<num;i++){
                printf("%s\n",str[i]);
        }
}
#include <stdio.h>
#include <string.h>
#define SIZE 80
#define LMT 3
#define HALT " "

/**
 * 字符串排序函数函数原型声明
 */
void str_sort(char *str[],int num);

int main(){
        char input[LMT][SIZE];
        char *ps[LMT];
        int ct = 0;
        int k;

        while(ct<LMT && gets(input[ct]) != NULL && input[ct][0] != ‘\0‘){
                ps[ct] = input[ct];
                ct++;
        }
        str_sort(ps,ct);
        puts("Here is the res list:");
        for(k=0;k<ct;k++){
                puts(ps[k]);
        }
        return 0;
}

void str_sort(char *str[], int num){
        char *tmp;
        int top,seek;
        for(top=0;top<num-1;top++){
                for(seek=top+1;seek<num;seek++){
                        if(strcmp(str[top], str[seek]) > 0){
                                tmp = str[top];
                                str[top] = str[seek];
                                str[seek] = tmp;
                        }
                }
        }
}
时间: 2024-10-28 19:16:24

C语言--指向多维数组的指针和指针数组的相关文章

c语言之指向二维数组元素的指针变量

如何使用指针对二维数组进行遍历? 首先我们需要明确的是:二维数组在内存中是连续的,比如一个二维数组int a[2][3]={1,2,3,4,5,6},可以视作是两个一维数组构成的,即int a0[3] ={1,2,3},int a1[3] = {4,5,6},我们知道,一维数组在内存中是连续的一块内存,并且数组名a0,a1代表的就是该数组首元素的地址,而正因为二维数组的内存中的地址也是连续的,所以a1的首元素的地址就为a0数组首元素的地址+a0中元素的个数,因此,我们就可以通过让指针不断+1来访

C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 本文由 arthinking 发表于315 天前 ⁄ itzhai.com原创文章 ⁄ C语言 ⁄ 评论数 3 ⁄ 被围观 1,775 views+ 指针数组: 在一个数组中,如果它的元素全部都是指针类

编程题:指向二维数组元素的指针变量。功能:已知二维数组a[2][3],输入输出全部元素。

#include<stdio.h> void main() { int a[2][3],i,j; int *p; /*用坐标法输入二维数组元素*/ for(i=0;i<2;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); /*用指针法输出二维数组元素*/ p=a[0];         /*等价于p&a[0][0];*/ for(;p<a[0]+6;p++)   printf("%4d&quo

二维数组和指向指针的指针

引用地址: http://www.cnblogs.com/stoneJin/archive/2011/09/21/2184211.html 一道面试题引发的问题,首先要知道[]的优先级高于*,题目: char **p,a[6][8]; 问p=a是否会导致程序在以后出现问题?为什么? 直接用程序说明: #include<stdio.h> void main(){ char **p,a[6][8]; p = a; printf("\n");} 编译,然后就会发现通不过,报错:错

指向二维数组元素的指针变量

(1)指向数组元素的指针变量 例1.有一个3X4的二维数组,要求用指向元素的指针变量输出二维数组各元素的值. 编写程序 1 #include <stdio.h> 2 int main() 3 { 4 int a[3][4] = { 1,3,5,7,9,11,13,15,17,19,21,23 }; 5 int *p; 6 for (p = a[0]; p < a[0] + 12; p++) //a[0]代表列指针的起点,p依次指向下一个元素 7 { 8 if ((p - a[0])%4

C++之指针指向二维数组

一维指针通常用指针表示,其指向的地址是数组第一元素所在的内存地址,如下 int ary[4][5]; int(*aryp)[5] = ary; 那么ary[4]相当于int(*aryp),以下理解如此,但参数传递需要知道实参所在 的一维个数,所以传递的时候应该传递多一个参数,子数组的引用可以理解 为(*p),那么取元素就是(*p)[i],如下 void printVal(int(*aryp)[5],int irowCount){ for (int(*p)[5] = aryp; p != aryp

二维数组做函数参数、指向指针的指针做函数参数

这里有一篇文章  写的很好http://blog.csdn.net/f81892461/article/details/8974087 该文章中有一句话  总之就是:数组无法作为参数,总会被编译器将地址赋值给形参指针的,即使指针定义成数组形式,也还是指针.然后各种差别都是由数组和指针不同的定位元素的方式导致的. 这句话说的很对啊,数组做形参的是时候都是被当成指针来处理的.不明白这句话的可以看一下,参考文章链接里的那幅图,注意比较一下下图中的两个:data+1,第一个data+1指向的是元素dat

c语言中多维数组和指针的关系

如图: 执行结果: 说明:由执行结果可知,三个输出的结果相等(可能在不同的平台执行结果不相同,但三个的结果是相等的),数组multi的地址与数组multi[0]的地址相同,都等于存储的第一个整数的地址(multi[0][0])

初学c课程笔记整理7--&gt;&gt;二维数组、字符串、指针

是什么?有什么用?用在什么地方?(理解) 养成良好的编程习惯; 培养编程思想: 写代码之前应该先分析需求,分析完需求再开始写代码:(写注释)   1.二维数组 1.1 二维数组的基本概念: 所谓多维数组就是一个一维数组的每个元素又被声明为一 维数组,从而构成二维数组. 可以说二维数组是特殊的一维数组. 示例 int a[2][3] 可以看作由一维数组a[0]和一维数组a[1]组成,这两个一维数组都包含了3个int类型的元素 1.2 二维数组的定义: 数组中的每一个元素又是一个数组, 那么这个数组